{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "# 向量\n",
    "> 有值和方向的量\n",
    "\n",
    "假设在二维平面有一个点 x = 2, y = 1\n",
    "\n",
    "\\begin{equation}\\vec{v} = \\begin{bmatrix}2 \\\\ 1 \\end{bmatrix}\\end{equation}\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from IPython.core.interactiveshell import InteractiveShell\n",
    "InteractiveShell.ast_node_interactivity = \"last_expr\"\n",
    "# %matplotlib inline\n",
    "import math\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\r\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\r\n  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n<!-- Created with matplotlib (https://matplotlib.org/) -->\r\n<svg height=\"271.794688pt\" version=\"1.1\" viewBox=\"0 0 370.942187 271.794688\" width=\"370.942187pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n <defs>\r\n  <style type=\"text/css\">\r\n*{stroke-linecap:butt;stroke-linejoin:round;}\r\n  </style>\r\n </defs>\r\n <g id=\"figure_1\">\r\n  <g id=\"patch_1\">\r\n   <path d=\"M 0 271.794688 \r\nL 370.942187 271.794688 \r\nL 370.942187 0 \r\nL 0 0 \r\nz\r\n\" style=\"fill:none;\"/>\r\n  </g>\r\n  <g id=\"axes_1\">\r\n   <g id=\"patch_2\">\r\n    <path d=\"M 28.942188 235.238438 \r\nL 363.742188 235.238438 \r\nL 363.742188 17.798438 \r\nL 28.942188 17.798438 \r\nz\r\n\" style=\"fill:#ffffff;\"/>\r\n   </g>\r\n   <g id=\"Quiver_1\">\r\n    <path clip-path=\"url(#pd7dd767bd9)\" d=\"M 195.780711 125.395484 \r\nL 252.634131 96.968774 \r\nL 250.388224 95.284344 \r\nL 263.302188 93.038438 \r\nL 253.757084 102.022064 \r\nL 253.757084 99.214681 \r\nL 196.903664 127.641391 \r\nL 195.780711 125.395484 \r\n\" style=\"fill:#ff0000;\"/>\r\n   </g>\r\n   <g id=\"matplotlib.axis_1\">\r\n    <g id=\"xtick_1\">\r\n     <g id=\"line2d_1\">\r\n      <path clip-path=\"url(#pd7dd767bd9)\" d=\"M 74.596733 235.238438 \r\nL 74.596733 17.798438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_2\">\r\n      <defs>\r\n       <path d=\"M 0 0 \r\nL 0 3.5 \r\n\" id=\"m6d96129bf7\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n      </defs>\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"74.596733\" xlink:href=\"#m6d96129bf7\" y=\"235.238438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_1\">\r\n      <!-- −4 -->\r\n      <defs>\r\n       <path d=\"M 10.59375 35.5 \r\nL 73.1875 35.5 \r\nL 73.1875 27.203125 \r\nL 10.59375 27.203125 \r\nz\r\n\" id=\"DejaVuSans-8722\"/>\r\n       <path d=\"M 37.796875 64.3125 \r\nL 12.890625 25.390625 \r\nL 37.796875 25.390625 \r\nz\r\nM 35.203125 72.90625 \r\nL 47.609375 72.90625 \r\nL 47.609375 25.390625 \r\nL 58.015625 25.390625 \r\nL 58.015625 17.1875 \r\nL 47.609375 17.1875 \r\nL 47.609375 0 \r\nL 37.796875 0 \r\nL 37.796875 17.1875 \r\nL 4.890625 17.1875 \r\nL 4.890625 26.703125 \r\nz\r\n\" id=\"DejaVuSans-52\"/>\r\n      </defs>\r\n      <g transform=\"translate(67.225639 249.836875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-52\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_2\">\r\n     <g id=\"line2d_3\">\r\n      <path clip-path=\"url(#pd7dd767bd9)\" d=\"M 135.46946 235.238438 \r\nL 135.46946 17.798438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_4\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"135.46946\" xlink:href=\"#m6d96129bf7\" y=\"235.238438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_2\">\r\n      <!-- −2 -->\r\n      <defs>\r\n       <path d=\"M 19.1875 8.296875 \r\nL 53.609375 8.296875 \r\nL 53.609375 0 \r\nL 7.328125 0 \r\nL 7.328125 8.296875 \r\nQ 12.9375 14.109375 22.625 23.890625 \r\nQ 32.328125 33.6875 34.8125 36.53125 \r\nQ 39.546875 41.84375 41.421875 45.53125 \r\nQ 43.3125 49.21875 43.3125 52.78125 \r\nQ 43.3125 58.59375 39.234375 62.25 \r\nQ 35.15625 65.921875 28.609375 65.921875 \r\nQ 23.96875 65.921875 18.8125 64.3125 \r\nQ 13.671875 62.703125 7.8125 59.421875 \r\nL 7.8125 69.390625 \r\nQ 13.765625 71.78125 18.9375 73 \r\nQ 24.125 74.21875 28.421875 74.21875 \r\nQ 39.75 74.21875 46.484375 68.546875 \r\nQ 53.21875 62.890625 53.21875 53.421875 \r\nQ 53.21875 48.921875 51.53125 44.890625 \r\nQ 49.859375 40.875 45.40625 35.40625 \r\nQ 44.1875 33.984375 37.640625 27.21875 \r\nQ 31.109375 20.453125 19.1875 8.296875 \r\nz\r\n\" id=\"DejaVuSans-50\"/>\r\n      </defs>\r\n      <g transform=\"translate(128.098366 249.836875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-50\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_3\">\r\n     <g id=\"line2d_5\">\r\n      <path clip-path=\"url(#pd7dd767bd9)\" d=\"M 196.342188 235.238438 \r\nL 196.342188 17.798438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_6\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"196.342188\" xlink:href=\"#m6d96129bf7\" y=\"235.238438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_3\">\r\n      <!-- 0 -->\r\n      <defs>\r\n       <path d=\"M 31.78125 66.40625 \r\nQ 24.171875 66.40625 20.328125 58.90625 \r\nQ 16.5 51.421875 16.5 36.375 \r\nQ 16.5 21.390625 20.328125 13.890625 \r\nQ 24.171875 6.390625 31.78125 6.390625 \r\nQ 39.453125 6.390625 43.28125 13.890625 \r\nQ 47.125 21.390625 47.125 36.375 \r\nQ 47.125 51.421875 43.28125 58.90625 \r\nQ 39.453125 66.40625 31.78125 66.40625 \r\nz\r\nM 31.78125 74.21875 \r\nQ 44.046875 74.21875 50.515625 64.515625 \r\nQ 56.984375 54.828125 56.984375 36.375 \r\nQ 56.984375 17.96875 50.515625 8.265625 \r\nQ 44.046875 -1.421875 31.78125 -1.421875 \r\nQ 19.53125 -1.421875 13.0625 8.265625 \r\nQ 6.59375 17.96875 6.59375 36.375 \r\nQ 6.59375 54.828125 13.0625 64.515625 \r\nQ 19.53125 74.21875 31.78125 74.21875 \r\nz\r\n\" id=\"DejaVuSans-48\"/>\r\n      </defs>\r\n      <g transform=\"translate(193.160938 249.836875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_4\">\r\n     <g id=\"line2d_7\">\r\n      <path clip-path=\"url(#pd7dd767bd9)\" d=\"M 257.214915 235.238438 \r\nL 257.214915 17.798438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_8\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"257.214915\" xlink:href=\"#m6d96129bf7\" y=\"235.238438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_4\">\r\n      <!-- 2 -->\r\n      <g transform=\"translate(254.033665 249.836875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-50\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_5\">\r\n     <g id=\"line2d_9\">\r\n      <path clip-path=\"url(#pd7dd767bd9)\" d=\"M 318.087642 235.238438 \r\nL 318.087642 17.798438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_10\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"318.087642\" xlink:href=\"#m6d96129bf7\" y=\"235.238438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_5\">\r\n      <!-- 4 -->\r\n      <g transform=\"translate(314.906392 249.836875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-52\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"text_6\">\r\n     <!-- 1e−2 -->\r\n     <defs>\r\n      <path d=\"M 12.40625 8.296875 \r\nL 28.515625 8.296875 \r\nL 28.515625 63.921875 \r\nL 10.984375 60.40625 \r\nL 10.984375 69.390625 \r\nL 28.421875 72.90625 \r\nL 38.28125 72.90625 \r\nL 38.28125 8.296875 \r\nL 54.390625 8.296875 \r\nL 54.390625 0 \r\nL 12.40625 0 \r\nz\r\n\" id=\"DejaVuSans-49\"/>\r\n      <path d=\"M 56.203125 29.59375 \r\nL 56.203125 25.203125 \r\nL 14.890625 25.203125 \r\nQ 15.484375 15.921875 20.484375 11.0625 \r\nQ 25.484375 6.203125 34.421875 6.203125 \r\nQ 39.59375 6.203125 44.453125 7.46875 \r\nQ 49.3125 8.734375 54.109375 11.28125 \r\nL 54.109375 2.78125 \r\nQ 49.265625 0.734375 44.1875 -0.34375 \r\nQ 39.109375 -1.421875 33.890625 -1.421875 \r\nQ 20.796875 -1.421875 13.15625 6.1875 \r\nQ 5.515625 13.8125 5.515625 26.8125 \r\nQ 5.515625 40.234375 12.765625 48.109375 \r\nQ 20.015625 56 32.328125 56 \r\nQ 43.359375 56 49.78125 48.890625 \r\nQ 56.203125 41.796875 56.203125 29.59375 \r\nz\r\nM 47.21875 32.234375 \r\nQ 47.125 39.59375 43.09375 43.984375 \r\nQ 39.0625 48.390625 32.421875 48.390625 \r\nQ 24.90625 48.390625 20.390625 44.140625 \r\nQ 15.875 39.890625 15.1875 32.171875 \r\nz\r\n\" id=\"DejaVuSans-101\"/>\r\n     </defs>\r\n     <g transform=\"translate(336.484375 262.515)scale(0.1 -0.1)\">\r\n      <use xlink:href=\"#DejaVuSans-49\"/>\r\n      <use x=\"63.623047\" xlink:href=\"#DejaVuSans-101\"/>\r\n      <use x=\"125.146484\" xlink:href=\"#DejaVuSans-8722\"/>\r\n      <use x=\"208.935547\" xlink:href=\"#DejaVuSans-50\"/>\r\n     </g>\r\n    </g>\r\n   </g>\r\n   <g id=\"matplotlib.axis_2\">\r\n    <g id=\"ytick_1\">\r\n     <g id=\"line2d_11\">\r\n      <path clip-path=\"url(#pd7dd767bd9)\" d=\"M 28.942188 217.827528 \r\nL 363.742188 217.827528 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_12\">\r\n      <defs>\r\n       <path d=\"M 0 0 \r\nL -3.5 0 \r\n\" id=\"m5b0c624437\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n      </defs>\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m5b0c624437\" y=\"217.827528\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_7\">\r\n      <!-- −3 -->\r\n      <defs>\r\n       <path d=\"M 40.578125 39.3125 \r\nQ 47.65625 37.796875 51.625 33 \r\nQ 55.609375 28.21875 55.609375 21.1875 \r\nQ 55.609375 10.40625 48.1875 4.484375 \r\nQ 40.765625 -1.421875 27.09375 -1.421875 \r\nQ 22.515625 -1.421875 17.65625 -0.515625 \r\nQ 12.796875 0.390625 7.625 2.203125 \r\nL 7.625 11.71875 \r\nQ 11.71875 9.328125 16.59375 8.109375 \r\nQ 21.484375 6.890625 26.8125 6.890625 \r\nQ 36.078125 6.890625 40.9375 10.546875 \r\nQ 45.796875 14.203125 45.796875 21.1875 \r\nQ 45.796875 27.640625 41.28125 31.265625 \r\nQ 36.765625 34.90625 28.71875 34.90625 \r\nL 20.21875 34.90625 \r\nL 20.21875 43.015625 \r\nL 29.109375 43.015625 \r\nQ 36.375 43.015625 40.234375 45.921875 \r\nQ 44.09375 48.828125 44.09375 54.296875 \r\nQ 44.09375 59.90625 40.109375 62.90625 \r\nQ 36.140625 65.921875 28.71875 65.921875 \r\nQ 24.65625 65.921875 20.015625 65.03125 \r\nQ 15.375 64.15625 9.8125 62.3125 \r\nL 9.8125 71.09375 \r\nQ 15.4375 72.65625 20.34375 73.4375 \r\nQ 25.25 74.21875 29.59375 74.21875 \r\nQ 40.828125 74.21875 47.359375 69.109375 \r\nQ 53.90625 64.015625 53.90625 55.328125 \r\nQ 53.90625 49.265625 50.4375 45.09375 \r\nQ 46.96875 40.921875 40.578125 39.3125 \r\nz\r\n\" id=\"DejaVuSans-51\"/>\r\n      </defs>\r\n      <g transform=\"translate(7.2 221.626747)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-51\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_2\">\r\n     <g id=\"line2d_13\">\r\n      <path clip-path=\"url(#pd7dd767bd9)\" d=\"M 28.942188 187.391165 \r\nL 363.742188 187.391165 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_14\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m5b0c624437\" y=\"187.391165\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_8\">\r\n      <!-- −2 -->\r\n      <g transform=\"translate(7.2 191.190384)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-50\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_3\">\r\n     <g id=\"line2d_15\">\r\n      <path clip-path=\"url(#pd7dd767bd9)\" d=\"M 28.942188 156.954801 \r\nL 363.742188 156.954801 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_16\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m5b0c624437\" y=\"156.954801\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_9\">\r\n      <!-- −1 -->\r\n      <g transform=\"translate(7.2 160.75402)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-49\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_4\">\r\n     <g id=\"line2d_17\">\r\n      <path clip-path=\"url(#pd7dd767bd9)\" d=\"M 28.942188 126.518438 \r\nL 363.742188 126.518438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_18\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m5b0c624437\" y=\"126.518438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_10\">\r\n      <!-- 0 -->\r\n      <g transform=\"translate(15.579688 130.317656)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_5\">\r\n     <g id=\"line2d_19\">\r\n      <path clip-path=\"url(#pd7dd767bd9)\" d=\"M 28.942188 96.082074 \r\nL 363.742188 96.082074 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_20\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m5b0c624437\" y=\"96.082074\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_11\">\r\n      <!-- 1 -->\r\n      <g transform=\"translate(15.579688 99.881293)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-49\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_6\">\r\n     <g id=\"line2d_21\">\r\n      <path clip-path=\"url(#pd7dd767bd9)\" d=\"M 28.942188 65.64571 \r\nL 363.742188 65.64571 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_22\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m5b0c624437\" y=\"65.64571\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_12\">\r\n      <!-- 2 -->\r\n      <g transform=\"translate(15.579688 69.444929)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-50\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_7\">\r\n     <g id=\"line2d_23\">\r\n      <path clip-path=\"url(#pd7dd767bd9)\" d=\"M 28.942188 35.209347 \r\nL 363.742188 35.209347 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_24\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m5b0c624437\" y=\"35.209347\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_13\">\r\n      <!-- 3 -->\r\n      <g transform=\"translate(15.579688 39.008565)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-51\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"text_14\">\r\n     <!-- 1e−2 -->\r\n     <g transform=\"translate(28.942188 14.798437)scale(0.1 -0.1)\">\r\n      <use xlink:href=\"#DejaVuSans-49\"/>\r\n      <use x=\"63.623047\" xlink:href=\"#DejaVuSans-101\"/>\r\n      <use x=\"125.146484\" xlink:href=\"#DejaVuSans-8722\"/>\r\n      <use x=\"208.935547\" xlink:href=\"#DejaVuSans-50\"/>\r\n     </g>\r\n    </g>\r\n   </g>\r\n   <g id=\"line2d_25\">\r\n    <path clip-path=\"url(#pd7dd767bd9)\" d=\"M 28.942188 126.518438 \r\nL 363.742188 126.518438 \r\n\" style=\"fill:none;stroke:#1f77b4;stroke-linecap:square;stroke-width:1.5;\"/>\r\n   </g>\r\n   <g id=\"line2d_26\">\r\n    <path clip-path=\"url(#pd7dd767bd9)\" d=\"M 196.342188 235.238438 \r\nL 196.342188 17.798438 \r\n\" style=\"fill:none;stroke:#1f77b4;stroke-linecap:square;stroke-width:1.5;\"/>\r\n   </g>\r\n   <g id=\"patch_3\">\r\n    <path d=\"M 28.942188 235.238438 \r\nL 28.942188 17.798437 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_4\">\r\n    <path d=\"M 363.742188 235.238438 \r\nL 363.742188 17.798437 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_5\">\r\n    <path d=\"M 28.942188 235.238438 \r\nL 363.742188 235.238438 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_6\">\r\n    <path d=\"M 28.942188 17.798438 \r\nL 363.742188 17.798438 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n  </g>\r\n </g>\r\n <defs>\r\n  <clipPath id=\"pd7dd767bd9\">\r\n   <rect height=\"217.44\" width=\"334.8\" x=\"28.942188\" y=\"17.798438\"/>\r\n  </clipPath>\r\n </defs>\r\n</svg>\r\n",
      "text/plain": "<Figure size 432x288 with 1 Axes>"
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "v = np.array([2,1])\n",
    "\n",
    "origin = [0], [0]\n",
    "plt.axhline()\n",
    "plt.axvline()\n",
    "plt.axis('equal')\n",
    "plt.grid()\n",
    "plt.ticklabel_format(style='sci', axis='both', scilimits=(0,0))\n",
    "plt.quiver(*origin, *v, scale=10, color='r')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "## 计算向量对应的标量\n",
    "\n",
    "\\begin{equation}\\|\\vec{v}\\| = \\sqrt{v_{1}\\;^{2} + v_{2}\\;^{2}}\\end{equation}\n",
    "\n",
    "\n",
    "\\begin{equation}\\|\\vec{v}\\| = \\sqrt{2^{2} + 1^{2}}\\end{equation}\n",
    "\n",
    "\n",
    "\\begin{equation}\\|\\vec{v}\\| = \\sqrt{4 + 1}\\end{equation}\n",
    "\n",
    "\n",
    "\\begin{equation}\\|\\vec{v}\\| = \\sqrt{5} \\approx 2.24\\end{equation}\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": "2.23606797749979"
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "vMag = math.sqrt(v[0]**2 + v[1]**2)\n",
    "vMag"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "对于n维空间的情况\n",
    "\n",
    "\\begin{equation}\\|\\vec{v}\\| = \\sqrt{v_{1}\\;^{2} + v_{2}\\;^{2} ... + v_{n}\\;^{2}}\\end{equation}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": "2.23606797749979"
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "vMag = np.linalg.norm(v) # 使用 norm 方法\n",
    "vMag"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": "Help on function norm in module numpy.linalg:\n\nnorm(x, ord=None, axis=None, keepdims=False)\n    Matrix or vector norm.\n    \n    This function is able to return one of eight different matrix norms,\n    or one of an infinite number of vector norms (described below), depending\n    on the value of the ``ord`` parameter.\n    \n    Parameters\n    ----------\n    x : array_like\n        Input array.  If `axis` is None, `x` must be 1-D or 2-D.\n    ord : {non-zero int, inf, -inf, 'fro', 'nuc'}, optional\n        Order of the norm (see table under ``Notes``). inf means numpy's\n        `inf` object.\n    axis : {int, 2-tuple of ints, None}, optional\n        If `axis` is an integer, it specifies the axis of `x` along which to\n        compute the vector norms.  If `axis` is a 2-tuple, it specifies the\n        axes that hold 2-D matrices, and the matrix norms of these matrices\n        are computed.  If `axis` is None then either a vector norm (when `x`\n        is 1-D) or a matrix norm (when `x` is 2-D) is returned.\n    \n        .. versionadded:: 1.8.0\n    \n    keepdims : bool, optional\n        If this is set to True, the axes which are normed over are left in the\n        result as dimensions with size one.  With this option the result will\n        broadcast correctly against the original `x`.\n    \n        .. versionadded:: 1.10.0\n    \n    Returns\n    -------\n    n : float or ndarray\n        Norm of the matrix or vector(s).\n    \n    Notes\n    -----\n    For values of ``ord <= 0``, the result is, strictly speaking, not a\n    mathematical 'norm', but it may still be useful for various numerical\n    purposes.\n    \n    The following norms can be calculated:\n    \n    =====  ============================  ==========================\n    ord    norm for matrices             norm for vectors\n    =====  ============================  ==========================\n    None   Frobenius norm                2-norm\n    'fro'  Frobenius norm                --\n    'nuc'  nuclear norm                  --\n    inf    max(sum(abs(x), axis=1))      max(abs(x))\n    -inf   min(sum(abs(x), axis=1))      min(abs(x))\n    0      --                            sum(x != 0)\n    1      max(sum(abs(x), axis=0))      as below\n    -1     min(sum(abs(x), axis=0))      as below\n    2      2-norm (largest sing. value)  as below\n    -2     smallest singular value       as below\n    other  --                            sum(abs(x)**ord)**(1./ord)\n    =====  ============================  ==========================\n    \n    The Frobenius norm is given by [1]_:\n    \n        :math:`||A||_F = [\\sum_{i,j} abs(a_{i,j})^2]^{1/2}`\n    \n    The nuclear norm is the sum of the singular values.\n    \n    References\n    ----------\n    .. [1] G. H. Golub and C. F. Van Loan, *Matrix Computations*,\n           Baltimore, MD, Johns Hopkins University Press, 1985, pg. 15\n    \n    Examples\n    --------\n    >>> from numpy import linalg as LA\n    >>> a = np.arange(9) - 4\n    >>> a\n    array([-4, -3, -2, ...,  2,  3,  4])\n    >>> b = a.reshape((3, 3))\n    >>> b\n    array([[-4, -3, -2],\n           [-1,  0,  1],\n           [ 2,  3,  4]])\n    \n    >>> LA.norm(a)\n    7.745966692414834\n    >>> LA.norm(b)\n    7.745966692414834\n    >>> LA.norm(b, 'fro')\n    7.745966692414834\n    >>> LA.norm(a, np.inf)\n    4.0\n    >>> LA.norm(b, np.inf)\n    9.0\n    >>> LA.norm(a, -np.inf)\n    0.0\n    >>> LA.norm(b, -np.inf)\n    2.0\n    \n    >>> LA.norm(a, 1)\n    20.0\n    >>> LA.norm(b, 1)\n    7.0\n    >>> LA.norm(a, -1)\n    -4.6566128774142013e-010\n    >>> LA.norm(b, -1)\n    6.0\n    >>> LA.norm(a, 2)\n    7.745966692414834\n    >>> LA.norm(b, 2)\n    7.3484692283495345\n    \n    >>> LA.norm(a, -2)\n    0.0\n    >>> LA.norm(b, -2)\n    1.8570331885190563e-016 # may vary\n    >>> LA.norm(a, 3)\n    5.8480354764257312 # may vary\n    >>> LA.norm(a, -3)\n    0.0\n    \n    Using the `axis` argument to compute vector norms:\n    \n    >>> c = np.array([[ 1, 2, 3],\n    ...               [-1, 1, 4]])\n    >>> LA.norm(c, axis=0)\n    array([ 1.41421356,  2.23606798,  5.        ])\n    >>> LA.norm(c, axis=1)\n    array([ 3.74165739,  4.24264069])\n    >>> LA.norm(c, ord=1, axis=1)\n    array([ 6.,  6.])\n    \n    Using the `axis` argument to compute matrix norms:\n    \n    >>> m = np.arange(8).reshape(2,2,2)\n    >>> LA.norm(m, axis=(1,2))\n    array([  3.74165739,  11.22497216])\n    >>> LA.norm(m[0, :, :]), LA.norm(m[1, :, :])\n    (3.7416573867739413, 11.224972160321824)\n\n"
    }
   ],
   "source": [
    "help(np.linalg.norm)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "### 计算向量的方向（角度）\n",
    "\\begin{equation}tan(\\theta) = \\frac{1}{2}\\end{equation}\n",
    "\n",
    "\\begin{equation}\\theta = tan^{-1} (0.5) \\approx 26.57^{o}\\end{equation}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": "26.56505117707799"
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "angle = math.degrees(math.atan(v[1] / v[0])) # ard (arctan) → degree\n",
    "angle"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": "-63.43494882292201\n"
    }
   ],
   "source": [
    "print(math.degrees(math.atan(-2 / 1)))       # 角度应该在第二象限"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "> [atan2](https://docs.scipy.org/doc/numpy/reference/generated/numpy.arctan2.html?highlight=atan2)文档\n",
    "\n",
    "![atan2](http://bazhou.blob.core.windows.net/learning/mpp/atan2.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": "26.56505117707799\n153.434948822922\n"
    }
   ],
   "source": [
    "print(np.degrees(np.arctan2(v[1], v[0])))\n",
    "s = np.array([-2,1])\n",
    "print (np.degrees(np.arctan2(s[1], s[0])))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "## 向量加\n",
    "\n",
    "\\begin{equation}\\vec{v} = \\begin{bmatrix}2 \\\\ 1 \\end{bmatrix}\\end{equation}\n",
    "\n",
    "\\begin{equation}\\vec{s} = \\begin{bmatrix}-3 \\\\ 2 \\end{bmatrix}\\end{equation}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\r\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\r\n  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n<!-- Created with matplotlib (https://matplotlib.org/) -->\r\n<svg height=\"271.794688pt\" version=\"1.1\" viewBox=\"0 0 370.942187 271.794688\" width=\"370.942187pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n <defs>\r\n  <style type=\"text/css\">\r\n*{stroke-linecap:butt;stroke-linejoin:round;}\r\n  </style>\r\n </defs>\r\n <g id=\"figure_1\">\r\n  <g id=\"patch_1\">\r\n   <path d=\"M 0 271.794688 \r\nL 370.942187 271.794688 \r\nL 370.942187 0 \r\nL 0 0 \r\nz\r\n\" style=\"fill:none;\"/>\r\n  </g>\r\n  <g id=\"axes_1\">\r\n   <g id=\"patch_2\">\r\n    <path d=\"M 28.942188 235.238438 \r\nL 363.742188 235.238438 \r\nL 363.742188 17.798438 \r\nL 28.942188 17.798438 \r\nz\r\n\" style=\"fill:#ffffff;\"/>\r\n   </g>\r\n   <g id=\"Quiver_1\">\r\n    <path clip-path=\"url(#pd826338c3f)\" d=\"M 195.780711 125.395484 \r\nL 252.634131 96.968774 \r\nL 250.388224 95.284344 \r\nL 263.302188 93.038438 \r\nL 253.757084 102.022064 \r\nL 253.757084 99.214681 \r\nL 196.903664 127.641391 \r\nL 195.780711 125.395484 \r\n\" style=\"fill:#ff0000;\"/>\r\n    <path clip-path=\"url(#pd826338c3f)\" d=\"M 195.645761 127.563077 \r\nL 104.607514 66.870912 \r\nL 104.259301 69.656616 \r\nL 95.902188 59.558438 \r\nL 108.437857 63.388781 \r\nL 106.000366 64.781633 \r\nL 197.038614 125.473798 \r\nL 195.645761 127.563077 \r\n\" style=\"fill:#0000ff;\"/>\r\n   </g>\r\n   <g id=\"matplotlib.axis_1\">\r\n    <g id=\"xtick_1\">\r\n     <g id=\"line2d_1\">\r\n      <path clip-path=\"url(#pd826338c3f)\" d=\"M 74.596733 235.238438 \r\nL 74.596733 17.798438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_2\">\r\n      <defs>\r\n       <path d=\"M 0 0 \r\nL 0 3.5 \r\n\" id=\"m2b9ed902fc\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n      </defs>\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"74.596733\" xlink:href=\"#m2b9ed902fc\" y=\"235.238438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_1\">\r\n      <!-- −4 -->\r\n      <defs>\r\n       <path d=\"M 10.59375 35.5 \r\nL 73.1875 35.5 \r\nL 73.1875 27.203125 \r\nL 10.59375 27.203125 \r\nz\r\n\" id=\"DejaVuSans-8722\"/>\r\n       <path d=\"M 37.796875 64.3125 \r\nL 12.890625 25.390625 \r\nL 37.796875 25.390625 \r\nz\r\nM 35.203125 72.90625 \r\nL 47.609375 72.90625 \r\nL 47.609375 25.390625 \r\nL 58.015625 25.390625 \r\nL 58.015625 17.1875 \r\nL 47.609375 17.1875 \r\nL 47.609375 0 \r\nL 37.796875 0 \r\nL 37.796875 17.1875 \r\nL 4.890625 17.1875 \r\nL 4.890625 26.703125 \r\nz\r\n\" id=\"DejaVuSans-52\"/>\r\n      </defs>\r\n      <g transform=\"translate(67.225639 249.836875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-52\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_2\">\r\n     <g id=\"line2d_3\">\r\n      <path clip-path=\"url(#pd826338c3f)\" d=\"M 135.46946 235.238438 \r\nL 135.46946 17.798438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_4\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"135.46946\" xlink:href=\"#m2b9ed902fc\" y=\"235.238438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_2\">\r\n      <!-- −2 -->\r\n      <defs>\r\n       <path d=\"M 19.1875 8.296875 \r\nL 53.609375 8.296875 \r\nL 53.609375 0 \r\nL 7.328125 0 \r\nL 7.328125 8.296875 \r\nQ 12.9375 14.109375 22.625 23.890625 \r\nQ 32.328125 33.6875 34.8125 36.53125 \r\nQ 39.546875 41.84375 41.421875 45.53125 \r\nQ 43.3125 49.21875 43.3125 52.78125 \r\nQ 43.3125 58.59375 39.234375 62.25 \r\nQ 35.15625 65.921875 28.609375 65.921875 \r\nQ 23.96875 65.921875 18.8125 64.3125 \r\nQ 13.671875 62.703125 7.8125 59.421875 \r\nL 7.8125 69.390625 \r\nQ 13.765625 71.78125 18.9375 73 \r\nQ 24.125 74.21875 28.421875 74.21875 \r\nQ 39.75 74.21875 46.484375 68.546875 \r\nQ 53.21875 62.890625 53.21875 53.421875 \r\nQ 53.21875 48.921875 51.53125 44.890625 \r\nQ 49.859375 40.875 45.40625 35.40625 \r\nQ 44.1875 33.984375 37.640625 27.21875 \r\nQ 31.109375 20.453125 19.1875 8.296875 \r\nz\r\n\" id=\"DejaVuSans-50\"/>\r\n      </defs>\r\n      <g transform=\"translate(128.098366 249.836875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-50\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_3\">\r\n     <g id=\"line2d_5\">\r\n      <path clip-path=\"url(#pd826338c3f)\" d=\"M 196.342188 235.238438 \r\nL 196.342188 17.798438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_6\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"196.342188\" xlink:href=\"#m2b9ed902fc\" y=\"235.238438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_3\">\r\n      <!-- 0 -->\r\n      <defs>\r\n       <path d=\"M 31.78125 66.40625 \r\nQ 24.171875 66.40625 20.328125 58.90625 \r\nQ 16.5 51.421875 16.5 36.375 \r\nQ 16.5 21.390625 20.328125 13.890625 \r\nQ 24.171875 6.390625 31.78125 6.390625 \r\nQ 39.453125 6.390625 43.28125 13.890625 \r\nQ 47.125 21.390625 47.125 36.375 \r\nQ 47.125 51.421875 43.28125 58.90625 \r\nQ 39.453125 66.40625 31.78125 66.40625 \r\nz\r\nM 31.78125 74.21875 \r\nQ 44.046875 74.21875 50.515625 64.515625 \r\nQ 56.984375 54.828125 56.984375 36.375 \r\nQ 56.984375 17.96875 50.515625 8.265625 \r\nQ 44.046875 -1.421875 31.78125 -1.421875 \r\nQ 19.53125 -1.421875 13.0625 8.265625 \r\nQ 6.59375 17.96875 6.59375 36.375 \r\nQ 6.59375 54.828125 13.0625 64.515625 \r\nQ 19.53125 74.21875 31.78125 74.21875 \r\nz\r\n\" id=\"DejaVuSans-48\"/>\r\n      </defs>\r\n      <g transform=\"translate(193.160938 249.836875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_4\">\r\n     <g id=\"line2d_7\">\r\n      <path clip-path=\"url(#pd826338c3f)\" d=\"M 257.214915 235.238438 \r\nL 257.214915 17.798438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_8\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"257.214915\" xlink:href=\"#m2b9ed902fc\" y=\"235.238438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_4\">\r\n      <!-- 2 -->\r\n      <g transform=\"translate(254.033665 249.836875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-50\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_5\">\r\n     <g id=\"line2d_9\">\r\n      <path clip-path=\"url(#pd826338c3f)\" d=\"M 318.087642 235.238438 \r\nL 318.087642 17.798438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_10\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"318.087642\" xlink:href=\"#m2b9ed902fc\" y=\"235.238438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_5\">\r\n      <!-- 4 -->\r\n      <g transform=\"translate(314.906392 249.836875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-52\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"text_6\">\r\n     <!-- 1e−2 -->\r\n     <defs>\r\n      <path d=\"M 12.40625 8.296875 \r\nL 28.515625 8.296875 \r\nL 28.515625 63.921875 \r\nL 10.984375 60.40625 \r\nL 10.984375 69.390625 \r\nL 28.421875 72.90625 \r\nL 38.28125 72.90625 \r\nL 38.28125 8.296875 \r\nL 54.390625 8.296875 \r\nL 54.390625 0 \r\nL 12.40625 0 \r\nz\r\n\" id=\"DejaVuSans-49\"/>\r\n      <path d=\"M 56.203125 29.59375 \r\nL 56.203125 25.203125 \r\nL 14.890625 25.203125 \r\nQ 15.484375 15.921875 20.484375 11.0625 \r\nQ 25.484375 6.203125 34.421875 6.203125 \r\nQ 39.59375 6.203125 44.453125 7.46875 \r\nQ 49.3125 8.734375 54.109375 11.28125 \r\nL 54.109375 2.78125 \r\nQ 49.265625 0.734375 44.1875 -0.34375 \r\nQ 39.109375 -1.421875 33.890625 -1.421875 \r\nQ 20.796875 -1.421875 13.15625 6.1875 \r\nQ 5.515625 13.8125 5.515625 26.8125 \r\nQ 5.515625 40.234375 12.765625 48.109375 \r\nQ 20.015625 56 32.328125 56 \r\nQ 43.359375 56 49.78125 48.890625 \r\nQ 56.203125 41.796875 56.203125 29.59375 \r\nz\r\nM 47.21875 32.234375 \r\nQ 47.125 39.59375 43.09375 43.984375 \r\nQ 39.0625 48.390625 32.421875 48.390625 \r\nQ 24.90625 48.390625 20.390625 44.140625 \r\nQ 15.875 39.890625 15.1875 32.171875 \r\nz\r\n\" id=\"DejaVuSans-101\"/>\r\n     </defs>\r\n     <g transform=\"translate(336.484375 262.515)scale(0.1 -0.1)\">\r\n      <use xlink:href=\"#DejaVuSans-49\"/>\r\n      <use x=\"63.623047\" xlink:href=\"#DejaVuSans-101\"/>\r\n      <use x=\"125.146484\" xlink:href=\"#DejaVuSans-8722\"/>\r\n      <use x=\"208.935547\" xlink:href=\"#DejaVuSans-50\"/>\r\n     </g>\r\n    </g>\r\n   </g>\r\n   <g id=\"matplotlib.axis_2\">\r\n    <g id=\"ytick_1\">\r\n     <g id=\"line2d_11\">\r\n      <path clip-path=\"url(#pd826338c3f)\" d=\"M 28.942188 217.827528 \r\nL 363.742188 217.827528 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_12\">\r\n      <defs>\r\n       <path d=\"M 0 0 \r\nL -3.5 0 \r\n\" id=\"m2174dec202\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n      </defs>\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m2174dec202\" y=\"217.827528\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_7\">\r\n      <!-- −3 -->\r\n      <defs>\r\n       <path d=\"M 40.578125 39.3125 \r\nQ 47.65625 37.796875 51.625 33 \r\nQ 55.609375 28.21875 55.609375 21.1875 \r\nQ 55.609375 10.40625 48.1875 4.484375 \r\nQ 40.765625 -1.421875 27.09375 -1.421875 \r\nQ 22.515625 -1.421875 17.65625 -0.515625 \r\nQ 12.796875 0.390625 7.625 2.203125 \r\nL 7.625 11.71875 \r\nQ 11.71875 9.328125 16.59375 8.109375 \r\nQ 21.484375 6.890625 26.8125 6.890625 \r\nQ 36.078125 6.890625 40.9375 10.546875 \r\nQ 45.796875 14.203125 45.796875 21.1875 \r\nQ 45.796875 27.640625 41.28125 31.265625 \r\nQ 36.765625 34.90625 28.71875 34.90625 \r\nL 20.21875 34.90625 \r\nL 20.21875 43.015625 \r\nL 29.109375 43.015625 \r\nQ 36.375 43.015625 40.234375 45.921875 \r\nQ 44.09375 48.828125 44.09375 54.296875 \r\nQ 44.09375 59.90625 40.109375 62.90625 \r\nQ 36.140625 65.921875 28.71875 65.921875 \r\nQ 24.65625 65.921875 20.015625 65.03125 \r\nQ 15.375 64.15625 9.8125 62.3125 \r\nL 9.8125 71.09375 \r\nQ 15.4375 72.65625 20.34375 73.4375 \r\nQ 25.25 74.21875 29.59375 74.21875 \r\nQ 40.828125 74.21875 47.359375 69.109375 \r\nQ 53.90625 64.015625 53.90625 55.328125 \r\nQ 53.90625 49.265625 50.4375 45.09375 \r\nQ 46.96875 40.921875 40.578125 39.3125 \r\nz\r\n\" id=\"DejaVuSans-51\"/>\r\n      </defs>\r\n      <g transform=\"translate(7.2 221.626747)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-51\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_2\">\r\n     <g id=\"line2d_13\">\r\n      <path clip-path=\"url(#pd826338c3f)\" d=\"M 28.942188 187.391165 \r\nL 363.742188 187.391165 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_14\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m2174dec202\" y=\"187.391165\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_8\">\r\n      <!-- −2 -->\r\n      <g transform=\"translate(7.2 191.190384)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-50\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_3\">\r\n     <g id=\"line2d_15\">\r\n      <path clip-path=\"url(#pd826338c3f)\" d=\"M 28.942188 156.954801 \r\nL 363.742188 156.954801 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_16\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m2174dec202\" y=\"156.954801\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_9\">\r\n      <!-- −1 -->\r\n      <g transform=\"translate(7.2 160.75402)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-49\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_4\">\r\n     <g id=\"line2d_17\">\r\n      <path clip-path=\"url(#pd826338c3f)\" d=\"M 28.942188 126.518438 \r\nL 363.742188 126.518438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_18\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m2174dec202\" y=\"126.518438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_10\">\r\n      <!-- 0 -->\r\n      <g transform=\"translate(15.579688 130.317656)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_5\">\r\n     <g id=\"line2d_19\">\r\n      <path clip-path=\"url(#pd826338c3f)\" d=\"M 28.942188 96.082074 \r\nL 363.742188 96.082074 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_20\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m2174dec202\" y=\"96.082074\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_11\">\r\n      <!-- 1 -->\r\n      <g transform=\"translate(15.579688 99.881293)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-49\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_6\">\r\n     <g id=\"line2d_21\">\r\n      <path clip-path=\"url(#pd826338c3f)\" d=\"M 28.942188 65.64571 \r\nL 363.742188 65.64571 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_22\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m2174dec202\" y=\"65.64571\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_12\">\r\n      <!-- 2 -->\r\n      <g transform=\"translate(15.579688 69.444929)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-50\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_7\">\r\n     <g id=\"line2d_23\">\r\n      <path clip-path=\"url(#pd826338c3f)\" d=\"M 28.942188 35.209347 \r\nL 363.742188 35.209347 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_24\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m2174dec202\" y=\"35.209347\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_13\">\r\n      <!-- 3 -->\r\n      <g transform=\"translate(15.579688 39.008565)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-51\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"text_14\">\r\n     <!-- 1e−2 -->\r\n     <g transform=\"translate(28.942188 14.798437)scale(0.1 -0.1)\">\r\n      <use xlink:href=\"#DejaVuSans-49\"/>\r\n      <use x=\"63.623047\" xlink:href=\"#DejaVuSans-101\"/>\r\n      <use x=\"125.146484\" xlink:href=\"#DejaVuSans-8722\"/>\r\n      <use x=\"208.935547\" xlink:href=\"#DejaVuSans-50\"/>\r\n     </g>\r\n    </g>\r\n   </g>\r\n   <g id=\"patch_3\">\r\n    <path d=\"M 28.942188 235.238438 \r\nL 28.942188 17.798437 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_4\">\r\n    <path d=\"M 363.742188 235.238438 \r\nL 363.742188 17.798437 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_5\">\r\n    <path d=\"M 28.942188 235.238438 \r\nL 363.742188 235.238438 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_6\">\r\n    <path d=\"M 28.942188 17.798438 \r\nL 363.742188 17.798438 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n  </g>\r\n </g>\r\n <defs>\r\n  <clipPath id=\"pd826338c3f\">\r\n   <rect height=\"217.44\" width=\"334.8\" x=\"28.942188\" y=\"17.798438\"/>\r\n  </clipPath>\r\n </defs>\r\n</svg>\r\n",
      "text/plain": "<Figure size 432x288 with 1 Axes>"
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "v = np.array([2,1])\n",
    "s = np.array([-3,2])\n",
    "\n",
    "vecs = np.array([v,s])\n",
    "origin = [0], [0]\n",
    "plt.axis('equal')\n",
    "plt.grid()\n",
    "plt.ticklabel_format(style='sci', axis='both', scilimits=(0,0))\n",
    "plt.quiver(*origin, vecs[:,0], vecs[:,1], color=['r', 'b'], scale=10)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "\\begin{equation}\\vec{z} = \\vec{v}+\\vec{s}\\end{equation}\n",
    "\n",
    "\\begin{equation}\\vec{z} = \\begin{bmatrix}2 \\\\ 1 \\end{bmatrix} + \\begin{bmatrix}-3 \\\\ 2 \\end{bmatrix}\\end{equation}\n",
    "\n",
    "\\begin{equation}\\vec{z} = \\begin{bmatrix}2 \\\\ 1 \\end{bmatrix} + \\begin{bmatrix}-3 \\\\ 2 \\end{bmatrix} = \\begin{bmatrix}-1 \\\\ 3 \\end{bmatrix}\\end{equation}\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\r\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\r\n  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n<!-- Created with matplotlib (https://matplotlib.org/) -->\r\n<svg height=\"271.794688pt\" version=\"1.1\" viewBox=\"0 0 370.942187 271.794688\" width=\"370.942187pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n <defs>\r\n  <style type=\"text/css\">\r\n*{stroke-linecap:butt;stroke-linejoin:round;}\r\n  </style>\r\n </defs>\r\n <g id=\"figure_1\">\r\n  <g id=\"patch_1\">\r\n   <path d=\"M 0 271.794688 \r\nL 370.942187 271.794688 \r\nL 370.942187 0 \r\nL 0 0 \r\nz\r\n\" style=\"fill:none;\"/>\r\n  </g>\r\n  <g id=\"axes_1\">\r\n   <g id=\"patch_2\">\r\n    <path d=\"M 28.942188 235.238438 \r\nL 363.742188 235.238438 \r\nL 363.742188 17.798438 \r\nL 28.942188 17.798438 \r\nz\r\n\" style=\"fill:#ffffff;\"/>\r\n   </g>\r\n   <g id=\"Quiver_1\">\r\n    <path clip-path=\"url(#pe90608e8cc)\" d=\"M 195.780711 125.395484 \r\nL 252.634131 96.968774 \r\nL 250.388224 95.284344 \r\nL 263.302188 93.038438 \r\nL 253.757084 102.022064 \r\nL 253.757084 99.214681 \r\nL 196.903664 127.641391 \r\nL 195.780711 125.395484 \r\n\" style=\"fill:#ff0000;\"/>\r\n    <path clip-path=\"url(#pe90608e8cc)\" d=\"M 195.645761 127.563077 \r\nL 104.607514 66.870912 \r\nL 104.259301 69.656616 \r\nL 95.902188 59.558438 \r\nL 108.437857 63.388781 \r\nL 106.000366 64.781633 \r\nL 197.038614 125.473798 \r\nL 195.645761 127.563077 \r\n\" style=\"fill:#0000ff;\"/>\r\n    <path clip-path=\"url(#pe90608e8cc)\" d=\"M 195.151116 126.915461 \r\nL 165.244331 37.195108 \r\nL 163.259211 39.180228 \r\nL 162.862188 26.078437 \r\nL 170.405643 36.798084 \r\nL 167.626475 36.40106 \r\nL 197.533259 126.121414 \r\nL 195.151116 126.915461 \r\n\" style=\"fill:#008000;\"/>\r\n   </g>\r\n   <g id=\"matplotlib.axis_1\">\r\n    <g id=\"xtick_1\">\r\n     <g id=\"line2d_1\">\r\n      <path clip-path=\"url(#pe90608e8cc)\" d=\"M 74.596733 235.238438 \r\nL 74.596733 17.798438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_2\">\r\n      <defs>\r\n       <path d=\"M 0 0 \r\nL 0 3.5 \r\n\" id=\"maa55cbf89e\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n      </defs>\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"74.596733\" xlink:href=\"#maa55cbf89e\" y=\"235.238438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_1\">\r\n      <!-- −4 -->\r\n      <defs>\r\n       <path d=\"M 10.59375 35.5 \r\nL 73.1875 35.5 \r\nL 73.1875 27.203125 \r\nL 10.59375 27.203125 \r\nz\r\n\" id=\"DejaVuSans-8722\"/>\r\n       <path d=\"M 37.796875 64.3125 \r\nL 12.890625 25.390625 \r\nL 37.796875 25.390625 \r\nz\r\nM 35.203125 72.90625 \r\nL 47.609375 72.90625 \r\nL 47.609375 25.390625 \r\nL 58.015625 25.390625 \r\nL 58.015625 17.1875 \r\nL 47.609375 17.1875 \r\nL 47.609375 0 \r\nL 37.796875 0 \r\nL 37.796875 17.1875 \r\nL 4.890625 17.1875 \r\nL 4.890625 26.703125 \r\nz\r\n\" id=\"DejaVuSans-52\"/>\r\n      </defs>\r\n      <g transform=\"translate(67.225639 249.836875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-52\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_2\">\r\n     <g id=\"line2d_3\">\r\n      <path clip-path=\"url(#pe90608e8cc)\" d=\"M 135.46946 235.238438 \r\nL 135.46946 17.798438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_4\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"135.46946\" xlink:href=\"#maa55cbf89e\" y=\"235.238438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_2\">\r\n      <!-- −2 -->\r\n      <defs>\r\n       <path d=\"M 19.1875 8.296875 \r\nL 53.609375 8.296875 \r\nL 53.609375 0 \r\nL 7.328125 0 \r\nL 7.328125 8.296875 \r\nQ 12.9375 14.109375 22.625 23.890625 \r\nQ 32.328125 33.6875 34.8125 36.53125 \r\nQ 39.546875 41.84375 41.421875 45.53125 \r\nQ 43.3125 49.21875 43.3125 52.78125 \r\nQ 43.3125 58.59375 39.234375 62.25 \r\nQ 35.15625 65.921875 28.609375 65.921875 \r\nQ 23.96875 65.921875 18.8125 64.3125 \r\nQ 13.671875 62.703125 7.8125 59.421875 \r\nL 7.8125 69.390625 \r\nQ 13.765625 71.78125 18.9375 73 \r\nQ 24.125 74.21875 28.421875 74.21875 \r\nQ 39.75 74.21875 46.484375 68.546875 \r\nQ 53.21875 62.890625 53.21875 53.421875 \r\nQ 53.21875 48.921875 51.53125 44.890625 \r\nQ 49.859375 40.875 45.40625 35.40625 \r\nQ 44.1875 33.984375 37.640625 27.21875 \r\nQ 31.109375 20.453125 19.1875 8.296875 \r\nz\r\n\" id=\"DejaVuSans-50\"/>\r\n      </defs>\r\n      <g transform=\"translate(128.098366 249.836875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-50\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_3\">\r\n     <g id=\"line2d_5\">\r\n      <path clip-path=\"url(#pe90608e8cc)\" d=\"M 196.342188 235.238438 \r\nL 196.342188 17.798438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_6\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"196.342188\" xlink:href=\"#maa55cbf89e\" y=\"235.238438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_3\">\r\n      <!-- 0 -->\r\n      <defs>\r\n       <path d=\"M 31.78125 66.40625 \r\nQ 24.171875 66.40625 20.328125 58.90625 \r\nQ 16.5 51.421875 16.5 36.375 \r\nQ 16.5 21.390625 20.328125 13.890625 \r\nQ 24.171875 6.390625 31.78125 6.390625 \r\nQ 39.453125 6.390625 43.28125 13.890625 \r\nQ 47.125 21.390625 47.125 36.375 \r\nQ 47.125 51.421875 43.28125 58.90625 \r\nQ 39.453125 66.40625 31.78125 66.40625 \r\nz\r\nM 31.78125 74.21875 \r\nQ 44.046875 74.21875 50.515625 64.515625 \r\nQ 56.984375 54.828125 56.984375 36.375 \r\nQ 56.984375 17.96875 50.515625 8.265625 \r\nQ 44.046875 -1.421875 31.78125 -1.421875 \r\nQ 19.53125 -1.421875 13.0625 8.265625 \r\nQ 6.59375 17.96875 6.59375 36.375 \r\nQ 6.59375 54.828125 13.0625 64.515625 \r\nQ 19.53125 74.21875 31.78125 74.21875 \r\nz\r\n\" id=\"DejaVuSans-48\"/>\r\n      </defs>\r\n      <g transform=\"translate(193.160938 249.836875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_4\">\r\n     <g id=\"line2d_7\">\r\n      <path clip-path=\"url(#pe90608e8cc)\" d=\"M 257.214915 235.238438 \r\nL 257.214915 17.798438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_8\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"257.214915\" xlink:href=\"#maa55cbf89e\" y=\"235.238438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_4\">\r\n      <!-- 2 -->\r\n      <g transform=\"translate(254.033665 249.836875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-50\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_5\">\r\n     <g id=\"line2d_9\">\r\n      <path clip-path=\"url(#pe90608e8cc)\" d=\"M 318.087642 235.238438 \r\nL 318.087642 17.798438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_10\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"318.087642\" xlink:href=\"#maa55cbf89e\" y=\"235.238438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_5\">\r\n      <!-- 4 -->\r\n      <g transform=\"translate(314.906392 249.836875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-52\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"text_6\">\r\n     <!-- 1e−2 -->\r\n     <defs>\r\n      <path d=\"M 12.40625 8.296875 \r\nL 28.515625 8.296875 \r\nL 28.515625 63.921875 \r\nL 10.984375 60.40625 \r\nL 10.984375 69.390625 \r\nL 28.421875 72.90625 \r\nL 38.28125 72.90625 \r\nL 38.28125 8.296875 \r\nL 54.390625 8.296875 \r\nL 54.390625 0 \r\nL 12.40625 0 \r\nz\r\n\" id=\"DejaVuSans-49\"/>\r\n      <path d=\"M 56.203125 29.59375 \r\nL 56.203125 25.203125 \r\nL 14.890625 25.203125 \r\nQ 15.484375 15.921875 20.484375 11.0625 \r\nQ 25.484375 6.203125 34.421875 6.203125 \r\nQ 39.59375 6.203125 44.453125 7.46875 \r\nQ 49.3125 8.734375 54.109375 11.28125 \r\nL 54.109375 2.78125 \r\nQ 49.265625 0.734375 44.1875 -0.34375 \r\nQ 39.109375 -1.421875 33.890625 -1.421875 \r\nQ 20.796875 -1.421875 13.15625 6.1875 \r\nQ 5.515625 13.8125 5.515625 26.8125 \r\nQ 5.515625 40.234375 12.765625 48.109375 \r\nQ 20.015625 56 32.328125 56 \r\nQ 43.359375 56 49.78125 48.890625 \r\nQ 56.203125 41.796875 56.203125 29.59375 \r\nz\r\nM 47.21875 32.234375 \r\nQ 47.125 39.59375 43.09375 43.984375 \r\nQ 39.0625 48.390625 32.421875 48.390625 \r\nQ 24.90625 48.390625 20.390625 44.140625 \r\nQ 15.875 39.890625 15.1875 32.171875 \r\nz\r\n\" id=\"DejaVuSans-101\"/>\r\n     </defs>\r\n     <g transform=\"translate(336.484375 262.515)scale(0.1 -0.1)\">\r\n      <use xlink:href=\"#DejaVuSans-49\"/>\r\n      <use x=\"63.623047\" xlink:href=\"#DejaVuSans-101\"/>\r\n      <use x=\"125.146484\" xlink:href=\"#DejaVuSans-8722\"/>\r\n      <use x=\"208.935547\" xlink:href=\"#DejaVuSans-50\"/>\r\n     </g>\r\n    </g>\r\n   </g>\r\n   <g id=\"matplotlib.axis_2\">\r\n    <g id=\"ytick_1\">\r\n     <g id=\"line2d_11\">\r\n      <path clip-path=\"url(#pe90608e8cc)\" d=\"M 28.942188 217.827528 \r\nL 363.742188 217.827528 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_12\">\r\n      <defs>\r\n       <path d=\"M 0 0 \r\nL -3.5 0 \r\n\" id=\"m508607a9b4\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n      </defs>\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m508607a9b4\" y=\"217.827528\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_7\">\r\n      <!-- −3 -->\r\n      <defs>\r\n       <path d=\"M 40.578125 39.3125 \r\nQ 47.65625 37.796875 51.625 33 \r\nQ 55.609375 28.21875 55.609375 21.1875 \r\nQ 55.609375 10.40625 48.1875 4.484375 \r\nQ 40.765625 -1.421875 27.09375 -1.421875 \r\nQ 22.515625 -1.421875 17.65625 -0.515625 \r\nQ 12.796875 0.390625 7.625 2.203125 \r\nL 7.625 11.71875 \r\nQ 11.71875 9.328125 16.59375 8.109375 \r\nQ 21.484375 6.890625 26.8125 6.890625 \r\nQ 36.078125 6.890625 40.9375 10.546875 \r\nQ 45.796875 14.203125 45.796875 21.1875 \r\nQ 45.796875 27.640625 41.28125 31.265625 \r\nQ 36.765625 34.90625 28.71875 34.90625 \r\nL 20.21875 34.90625 \r\nL 20.21875 43.015625 \r\nL 29.109375 43.015625 \r\nQ 36.375 43.015625 40.234375 45.921875 \r\nQ 44.09375 48.828125 44.09375 54.296875 \r\nQ 44.09375 59.90625 40.109375 62.90625 \r\nQ 36.140625 65.921875 28.71875 65.921875 \r\nQ 24.65625 65.921875 20.015625 65.03125 \r\nQ 15.375 64.15625 9.8125 62.3125 \r\nL 9.8125 71.09375 \r\nQ 15.4375 72.65625 20.34375 73.4375 \r\nQ 25.25 74.21875 29.59375 74.21875 \r\nQ 40.828125 74.21875 47.359375 69.109375 \r\nQ 53.90625 64.015625 53.90625 55.328125 \r\nQ 53.90625 49.265625 50.4375 45.09375 \r\nQ 46.96875 40.921875 40.578125 39.3125 \r\nz\r\n\" id=\"DejaVuSans-51\"/>\r\n      </defs>\r\n      <g transform=\"translate(7.2 221.626747)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-51\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_2\">\r\n     <g id=\"line2d_13\">\r\n      <path clip-path=\"url(#pe90608e8cc)\" d=\"M 28.942188 187.391165 \r\nL 363.742188 187.391165 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_14\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m508607a9b4\" y=\"187.391165\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_8\">\r\n      <!-- −2 -->\r\n      <g transform=\"translate(7.2 191.190384)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-50\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_3\">\r\n     <g id=\"line2d_15\">\r\n      <path clip-path=\"url(#pe90608e8cc)\" d=\"M 28.942188 156.954801 \r\nL 363.742188 156.954801 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_16\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m508607a9b4\" y=\"156.954801\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_9\">\r\n      <!-- −1 -->\r\n      <g transform=\"translate(7.2 160.75402)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-49\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_4\">\r\n     <g id=\"line2d_17\">\r\n      <path clip-path=\"url(#pe90608e8cc)\" d=\"M 28.942188 126.518438 \r\nL 363.742188 126.518438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_18\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m508607a9b4\" y=\"126.518438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_10\">\r\n      <!-- 0 -->\r\n      <g transform=\"translate(15.579688 130.317656)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_5\">\r\n     <g id=\"line2d_19\">\r\n      <path clip-path=\"url(#pe90608e8cc)\" d=\"M 28.942188 96.082074 \r\nL 363.742188 96.082074 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_20\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m508607a9b4\" y=\"96.082074\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_11\">\r\n      <!-- 1 -->\r\n      <g transform=\"translate(15.579688 99.881293)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-49\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_6\">\r\n     <g id=\"line2d_21\">\r\n      <path clip-path=\"url(#pe90608e8cc)\" d=\"M 28.942188 65.64571 \r\nL 363.742188 65.64571 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_22\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m508607a9b4\" y=\"65.64571\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_12\">\r\n      <!-- 2 -->\r\n      <g transform=\"translate(15.579688 69.444929)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-50\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_7\">\r\n     <g id=\"line2d_23\">\r\n      <path clip-path=\"url(#pe90608e8cc)\" d=\"M 28.942188 35.209347 \r\nL 363.742188 35.209347 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_24\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m508607a9b4\" y=\"35.209347\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_13\">\r\n      <!-- 3 -->\r\n      <g transform=\"translate(15.579688 39.008565)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-51\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"text_14\">\r\n     <!-- 1e−2 -->\r\n     <g transform=\"translate(28.942188 14.798437)scale(0.1 -0.1)\">\r\n      <use xlink:href=\"#DejaVuSans-49\"/>\r\n      <use x=\"63.623047\" xlink:href=\"#DejaVuSans-101\"/>\r\n      <use x=\"125.146484\" xlink:href=\"#DejaVuSans-8722\"/>\r\n      <use x=\"208.935547\" xlink:href=\"#DejaVuSans-50\"/>\r\n     </g>\r\n    </g>\r\n   </g>\r\n   <g id=\"patch_3\">\r\n    <path d=\"M 28.942188 235.238438 \r\nL 28.942188 17.798437 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_4\">\r\n    <path d=\"M 363.742188 235.238438 \r\nL 363.742188 17.798437 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_5\">\r\n    <path d=\"M 28.942188 235.238438 \r\nL 363.742188 235.238438 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_6\">\r\n    <path d=\"M 28.942188 17.798438 \r\nL 363.742188 17.798438 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n  </g>\r\n </g>\r\n <defs>\r\n  <clipPath id=\"pe90608e8cc\">\r\n   <rect height=\"217.44\" width=\"334.8\" x=\"28.942188\" y=\"17.798438\"/>\r\n  </clipPath>\r\n </defs>\r\n</svg>\r\n",
      "text/plain": "<Figure size 432x288 with 1 Axes>"
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "z = v + s\n",
    "vecs = np.array([v,s,z])\n",
    "origin = [0], [0]\n",
    "plt.axis('equal')\n",
    "plt.grid()\n",
    "plt.ticklabel_format(style='sci', axis='both', scilimits=(0,0))\n",
    "plt.quiver(*origin, vecs[:,0], vecs[:,1], color=['r', 'b', 'g'], scale=10)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "# 向量乘\n",
    "\n",
    "向量乘有三种\n",
    "\n",
    "- 标量乘\n",
    "- 点积\n",
    "- 叉积\n",
    "\n",
    "## 标量乘\n",
    "\n",
    "\n",
    "\\begin{equation} \\vec{w} = 2\\vec{v}\\end{equation}\n",
    "\n",
    "\n",
    "\\begin{equation}\\vec{v} = \\begin{bmatrix}2 \\\\ 1 \\end{bmatrix}\\end{equation}\n",
    "\n",
    "\n",
    "\\begin{equation}\\vec{w} = \\begin{bmatrix}2 \\cdot 2 \\\\  2 \\cdot 1 \\end{bmatrix}\\end{equation}\n",
    "\n",
    "\n",
    "\\begin{equation}\\vec{w} = \\begin{bmatrix}2 \\cdot 2 \\\\  2 \\cdot 1 \\end{bmatrix} = \\begin{bmatrix}4 \\\\ 2 \\end{bmatrix}\\end{equation}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\r\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\r\n  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n<!-- Created with matplotlib (https://matplotlib.org/) -->\r\n<svg height=\"271.794688pt\" version=\"1.1\" viewBox=\"0 0 370.942187 271.794688\" width=\"370.942187pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n <defs>\r\n  <style type=\"text/css\">\r\n*{stroke-linecap:butt;stroke-linejoin:round;}\r\n  </style>\r\n </defs>\r\n <g id=\"figure_1\">\r\n  <g id=\"patch_1\">\r\n   <path d=\"M 0 271.794688 \r\nL 370.942187 271.794688 \r\nL 370.942187 0 \r\nL 0 0 \r\nz\r\n\" style=\"fill:none;\"/>\r\n  </g>\r\n  <g id=\"axes_1\">\r\n   <g id=\"patch_2\">\r\n    <path d=\"M 28.942188 235.238438 \r\nL 363.742188 235.238438 \r\nL 363.742188 17.798438 \r\nL 28.942188 17.798438 \r\nz\r\n\" style=\"fill:#ffffff;\"/>\r\n   </g>\r\n   <g id=\"Quiver_1\">\r\n    <path clip-path=\"url(#pbe245df35f)\" d=\"M 195.780711 125.395484 \r\nL 319.594131 63.488774 \r\nL 317.348224 61.804344 \r\nL 330.262188 59.558437 \r\nL 320.717084 68.542064 \r\nL 320.717084 65.734681 \r\nL 196.903664 127.641391 \r\nL 195.780711 125.395484 \r\n\"/>\r\n   </g>\r\n   <g id=\"matplotlib.axis_1\">\r\n    <g id=\"xtick_1\">\r\n     <g id=\"line2d_1\">\r\n      <path clip-path=\"url(#pbe245df35f)\" d=\"M 74.596733 235.238438 \r\nL 74.596733 17.798438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_2\">\r\n      <defs>\r\n       <path d=\"M 0 0 \r\nL 0 3.5 \r\n\" id=\"mfb8b18af87\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n      </defs>\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"74.596733\" xlink:href=\"#mfb8b18af87\" y=\"235.238438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_1\">\r\n      <!-- −4 -->\r\n      <defs>\r\n       <path d=\"M 10.59375 35.5 \r\nL 73.1875 35.5 \r\nL 73.1875 27.203125 \r\nL 10.59375 27.203125 \r\nz\r\n\" id=\"DejaVuSans-8722\"/>\r\n       <path d=\"M 37.796875 64.3125 \r\nL 12.890625 25.390625 \r\nL 37.796875 25.390625 \r\nz\r\nM 35.203125 72.90625 \r\nL 47.609375 72.90625 \r\nL 47.609375 25.390625 \r\nL 58.015625 25.390625 \r\nL 58.015625 17.1875 \r\nL 47.609375 17.1875 \r\nL 47.609375 0 \r\nL 37.796875 0 \r\nL 37.796875 17.1875 \r\nL 4.890625 17.1875 \r\nL 4.890625 26.703125 \r\nz\r\n\" id=\"DejaVuSans-52\"/>\r\n      </defs>\r\n      <g transform=\"translate(67.225639 249.836875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-52\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_2\">\r\n     <g id=\"line2d_3\">\r\n      <path clip-path=\"url(#pbe245df35f)\" d=\"M 135.46946 235.238438 \r\nL 135.46946 17.798438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_4\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"135.46946\" xlink:href=\"#mfb8b18af87\" y=\"235.238438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_2\">\r\n      <!-- −2 -->\r\n      <defs>\r\n       <path d=\"M 19.1875 8.296875 \r\nL 53.609375 8.296875 \r\nL 53.609375 0 \r\nL 7.328125 0 \r\nL 7.328125 8.296875 \r\nQ 12.9375 14.109375 22.625 23.890625 \r\nQ 32.328125 33.6875 34.8125 36.53125 \r\nQ 39.546875 41.84375 41.421875 45.53125 \r\nQ 43.3125 49.21875 43.3125 52.78125 \r\nQ 43.3125 58.59375 39.234375 62.25 \r\nQ 35.15625 65.921875 28.609375 65.921875 \r\nQ 23.96875 65.921875 18.8125 64.3125 \r\nQ 13.671875 62.703125 7.8125 59.421875 \r\nL 7.8125 69.390625 \r\nQ 13.765625 71.78125 18.9375 73 \r\nQ 24.125 74.21875 28.421875 74.21875 \r\nQ 39.75 74.21875 46.484375 68.546875 \r\nQ 53.21875 62.890625 53.21875 53.421875 \r\nQ 53.21875 48.921875 51.53125 44.890625 \r\nQ 49.859375 40.875 45.40625 35.40625 \r\nQ 44.1875 33.984375 37.640625 27.21875 \r\nQ 31.109375 20.453125 19.1875 8.296875 \r\nz\r\n\" id=\"DejaVuSans-50\"/>\r\n      </defs>\r\n      <g transform=\"translate(128.098366 249.836875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-50\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_3\">\r\n     <g id=\"line2d_5\">\r\n      <path clip-path=\"url(#pbe245df35f)\" d=\"M 196.342188 235.238438 \r\nL 196.342188 17.798438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_6\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"196.342188\" xlink:href=\"#mfb8b18af87\" y=\"235.238438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_3\">\r\n      <!-- 0 -->\r\n      <defs>\r\n       <path d=\"M 31.78125 66.40625 \r\nQ 24.171875 66.40625 20.328125 58.90625 \r\nQ 16.5 51.421875 16.5 36.375 \r\nQ 16.5 21.390625 20.328125 13.890625 \r\nQ 24.171875 6.390625 31.78125 6.390625 \r\nQ 39.453125 6.390625 43.28125 13.890625 \r\nQ 47.125 21.390625 47.125 36.375 \r\nQ 47.125 51.421875 43.28125 58.90625 \r\nQ 39.453125 66.40625 31.78125 66.40625 \r\nz\r\nM 31.78125 74.21875 \r\nQ 44.046875 74.21875 50.515625 64.515625 \r\nQ 56.984375 54.828125 56.984375 36.375 \r\nQ 56.984375 17.96875 50.515625 8.265625 \r\nQ 44.046875 -1.421875 31.78125 -1.421875 \r\nQ 19.53125 -1.421875 13.0625 8.265625 \r\nQ 6.59375 17.96875 6.59375 36.375 \r\nQ 6.59375 54.828125 13.0625 64.515625 \r\nQ 19.53125 74.21875 31.78125 74.21875 \r\nz\r\n\" id=\"DejaVuSans-48\"/>\r\n      </defs>\r\n      <g transform=\"translate(193.160938 249.836875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_4\">\r\n     <g id=\"line2d_7\">\r\n      <path clip-path=\"url(#pbe245df35f)\" d=\"M 257.214915 235.238438 \r\nL 257.214915 17.798438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_8\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"257.214915\" xlink:href=\"#mfb8b18af87\" y=\"235.238438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_4\">\r\n      <!-- 2 -->\r\n      <g transform=\"translate(254.033665 249.836875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-50\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_5\">\r\n     <g id=\"line2d_9\">\r\n      <path clip-path=\"url(#pbe245df35f)\" d=\"M 318.087642 235.238438 \r\nL 318.087642 17.798438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_10\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"318.087642\" xlink:href=\"#mfb8b18af87\" y=\"235.238438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_5\">\r\n      <!-- 4 -->\r\n      <g transform=\"translate(314.906392 249.836875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-52\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"text_6\">\r\n     <!-- 1e−2 -->\r\n     <defs>\r\n      <path d=\"M 12.40625 8.296875 \r\nL 28.515625 8.296875 \r\nL 28.515625 63.921875 \r\nL 10.984375 60.40625 \r\nL 10.984375 69.390625 \r\nL 28.421875 72.90625 \r\nL 38.28125 72.90625 \r\nL 38.28125 8.296875 \r\nL 54.390625 8.296875 \r\nL 54.390625 0 \r\nL 12.40625 0 \r\nz\r\n\" id=\"DejaVuSans-49\"/>\r\n      <path d=\"M 56.203125 29.59375 \r\nL 56.203125 25.203125 \r\nL 14.890625 25.203125 \r\nQ 15.484375 15.921875 20.484375 11.0625 \r\nQ 25.484375 6.203125 34.421875 6.203125 \r\nQ 39.59375 6.203125 44.453125 7.46875 \r\nQ 49.3125 8.734375 54.109375 11.28125 \r\nL 54.109375 2.78125 \r\nQ 49.265625 0.734375 44.1875 -0.34375 \r\nQ 39.109375 -1.421875 33.890625 -1.421875 \r\nQ 20.796875 -1.421875 13.15625 6.1875 \r\nQ 5.515625 13.8125 5.515625 26.8125 \r\nQ 5.515625 40.234375 12.765625 48.109375 \r\nQ 20.015625 56 32.328125 56 \r\nQ 43.359375 56 49.78125 48.890625 \r\nQ 56.203125 41.796875 56.203125 29.59375 \r\nz\r\nM 47.21875 32.234375 \r\nQ 47.125 39.59375 43.09375 43.984375 \r\nQ 39.0625 48.390625 32.421875 48.390625 \r\nQ 24.90625 48.390625 20.390625 44.140625 \r\nQ 15.875 39.890625 15.1875 32.171875 \r\nz\r\n\" id=\"DejaVuSans-101\"/>\r\n     </defs>\r\n     <g transform=\"translate(336.484375 262.515)scale(0.1 -0.1)\">\r\n      <use xlink:href=\"#DejaVuSans-49\"/>\r\n      <use x=\"63.623047\" xlink:href=\"#DejaVuSans-101\"/>\r\n      <use x=\"125.146484\" xlink:href=\"#DejaVuSans-8722\"/>\r\n      <use x=\"208.935547\" xlink:href=\"#DejaVuSans-50\"/>\r\n     </g>\r\n    </g>\r\n   </g>\r\n   <g id=\"matplotlib.axis_2\">\r\n    <g id=\"ytick_1\">\r\n     <g id=\"line2d_11\">\r\n      <path clip-path=\"url(#pbe245df35f)\" d=\"M 28.942188 205.587528 \r\nL 363.742188 205.587528 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_12\">\r\n      <defs>\r\n       <path d=\"M 0 0 \r\nL -3.5 0 \r\n\" id=\"m320b39c929\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n      </defs>\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m320b39c929\" y=\"205.587528\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_7\">\r\n      <!-- −4 -->\r\n      <g transform=\"translate(7.2 209.386747)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-52\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_2\">\r\n     <g id=\"line2d_13\">\r\n      <path clip-path=\"url(#pbe245df35f)\" d=\"M 28.942188 166.052983 \r\nL 363.742188 166.052983 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_14\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m320b39c929\" y=\"166.052983\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_8\">\r\n      <!-- −2 -->\r\n      <g transform=\"translate(7.2 169.852202)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-50\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_3\">\r\n     <g id=\"line2d_15\">\r\n      <path clip-path=\"url(#pbe245df35f)\" d=\"M 28.942188 126.518438 \r\nL 363.742188 126.518438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_16\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m320b39c929\" y=\"126.518438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_9\">\r\n      <!-- 0 -->\r\n      <g transform=\"translate(15.579688 130.317656)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_4\">\r\n     <g id=\"line2d_17\">\r\n      <path clip-path=\"url(#pbe245df35f)\" d=\"M 28.942188 86.983892 \r\nL 363.742188 86.983892 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_18\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m320b39c929\" y=\"86.983892\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_10\">\r\n      <!-- 2 -->\r\n      <g transform=\"translate(15.579688 90.783111)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-50\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_5\">\r\n     <g id=\"line2d_19\">\r\n      <path clip-path=\"url(#pbe245df35f)\" d=\"M 28.942188 47.449347 \r\nL 363.742188 47.449347 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_20\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m320b39c929\" y=\"47.449347\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_11\">\r\n      <!-- 4 -->\r\n      <g transform=\"translate(15.579688 51.248565)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-52\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"text_12\">\r\n     <!-- 1e−2 -->\r\n     <g transform=\"translate(28.942188 14.798437)scale(0.1 -0.1)\">\r\n      <use xlink:href=\"#DejaVuSans-49\"/>\r\n      <use x=\"63.623047\" xlink:href=\"#DejaVuSans-101\"/>\r\n      <use x=\"125.146484\" xlink:href=\"#DejaVuSans-8722\"/>\r\n      <use x=\"208.935547\" xlink:href=\"#DejaVuSans-50\"/>\r\n     </g>\r\n    </g>\r\n   </g>\r\n   <g id=\"patch_3\">\r\n    <path d=\"M 28.942188 235.238438 \r\nL 28.942188 17.798438 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_4\">\r\n    <path d=\"M 363.742188 235.238438 \r\nL 363.742188 17.798438 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_5\">\r\n    <path d=\"M 28.942188 235.238438 \r\nL 363.742188 235.238438 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_6\">\r\n    <path d=\"M 28.942188 17.798438 \r\nL 363.742188 17.798438 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n  </g>\r\n </g>\r\n <defs>\r\n  <clipPath id=\"pbe245df35f\">\r\n   <rect height=\"217.44\" width=\"334.8\" x=\"28.942188\" y=\"17.798438\"/>\r\n  </clipPath>\r\n </defs>\r\n</svg>\r\n",
      "text/plain": "<Figure size 432x288 with 1 Axes>"
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "v = np.array([2,1])\n",
    "\n",
    "w = 2 * v\n",
    "\n",
    "origin = [0], [0]\n",
    "plt.grid()\n",
    "plt.ticklabel_format(style='sci', axis='both', scilimits=(0,0))\n",
    "plt.quiver(*origin, *w, scale=10)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "乘以一个分数就是标量除\n",
    "\n",
    "\\begin{equation}\\vec{b} = \\frac{\\vec{v}}{2}\\end{equation}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\r\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\r\n  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n<!-- Created with matplotlib (https://matplotlib.org/) -->\r\n<svg height=\"271.794688pt\" version=\"1.1\" viewBox=\"0 0 370.942187 271.794688\" width=\"370.942187pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n <defs>\r\n  <style type=\"text/css\">\r\n*{stroke-linecap:butt;stroke-linejoin:round;}\r\n  </style>\r\n </defs>\r\n <g id=\"figure_1\">\r\n  <g id=\"patch_1\">\r\n   <path d=\"M 0 271.794688 \r\nL 370.942187 271.794688 \r\nL 370.942187 0 \r\nL 0 0 \r\nz\r\n\" style=\"fill:none;\"/>\r\n  </g>\r\n  <g id=\"axes_1\">\r\n   <g id=\"patch_2\">\r\n    <path d=\"M 28.942188 235.238438 \r\nL 363.742188 235.238438 \r\nL 363.742188 17.798438 \r\nL 28.942188 17.798438 \r\nz\r\n\" style=\"fill:#ffffff;\"/>\r\n   </g>\r\n   <g id=\"Quiver_1\">\r\n    <path clip-path=\"url(#p90b396ba74)\" d=\"M 195.780711 125.395484 \r\nL 219.154131 113.708774 \r\nL 216.908224 112.024344 \r\nL 229.822188 109.778437 \r\nL 220.277084 118.762064 \r\nL 220.277084 115.954681 \r\nL 196.903664 127.641391 \r\nL 195.780711 125.395484 \r\n\"/>\r\n   </g>\r\n   <g id=\"matplotlib.axis_1\">\r\n    <g id=\"xtick_1\">\r\n     <g id=\"line2d_1\">\r\n      <path clip-path=\"url(#p90b396ba74)\" d=\"M 74.596733 235.238438 \r\nL 74.596733 17.798438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_2\">\r\n      <defs>\r\n       <path d=\"M 0 0 \r\nL 0 3.5 \r\n\" id=\"mc6b9dcd539\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n      </defs>\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"74.596733\" xlink:href=\"#mc6b9dcd539\" y=\"235.238438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_1\">\r\n      <!-- −4 -->\r\n      <defs>\r\n       <path d=\"M 10.59375 35.5 \r\nL 73.1875 35.5 \r\nL 73.1875 27.203125 \r\nL 10.59375 27.203125 \r\nz\r\n\" id=\"DejaVuSans-8722\"/>\r\n       <path d=\"M 37.796875 64.3125 \r\nL 12.890625 25.390625 \r\nL 37.796875 25.390625 \r\nz\r\nM 35.203125 72.90625 \r\nL 47.609375 72.90625 \r\nL 47.609375 25.390625 \r\nL 58.015625 25.390625 \r\nL 58.015625 17.1875 \r\nL 47.609375 17.1875 \r\nL 47.609375 0 \r\nL 37.796875 0 \r\nL 37.796875 17.1875 \r\nL 4.890625 17.1875 \r\nL 4.890625 26.703125 \r\nz\r\n\" id=\"DejaVuSans-52\"/>\r\n      </defs>\r\n      <g transform=\"translate(67.225639 249.836875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-52\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_2\">\r\n     <g id=\"line2d_3\">\r\n      <path clip-path=\"url(#p90b396ba74)\" d=\"M 135.46946 235.238438 \r\nL 135.46946 17.798438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_4\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"135.46946\" xlink:href=\"#mc6b9dcd539\" y=\"235.238438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_2\">\r\n      <!-- −2 -->\r\n      <defs>\r\n       <path d=\"M 19.1875 8.296875 \r\nL 53.609375 8.296875 \r\nL 53.609375 0 \r\nL 7.328125 0 \r\nL 7.328125 8.296875 \r\nQ 12.9375 14.109375 22.625 23.890625 \r\nQ 32.328125 33.6875 34.8125 36.53125 \r\nQ 39.546875 41.84375 41.421875 45.53125 \r\nQ 43.3125 49.21875 43.3125 52.78125 \r\nQ 43.3125 58.59375 39.234375 62.25 \r\nQ 35.15625 65.921875 28.609375 65.921875 \r\nQ 23.96875 65.921875 18.8125 64.3125 \r\nQ 13.671875 62.703125 7.8125 59.421875 \r\nL 7.8125 69.390625 \r\nQ 13.765625 71.78125 18.9375 73 \r\nQ 24.125 74.21875 28.421875 74.21875 \r\nQ 39.75 74.21875 46.484375 68.546875 \r\nQ 53.21875 62.890625 53.21875 53.421875 \r\nQ 53.21875 48.921875 51.53125 44.890625 \r\nQ 49.859375 40.875 45.40625 35.40625 \r\nQ 44.1875 33.984375 37.640625 27.21875 \r\nQ 31.109375 20.453125 19.1875 8.296875 \r\nz\r\n\" id=\"DejaVuSans-50\"/>\r\n      </defs>\r\n      <g transform=\"translate(128.098366 249.836875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-50\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_3\">\r\n     <g id=\"line2d_5\">\r\n      <path clip-path=\"url(#p90b396ba74)\" d=\"M 196.342188 235.238438 \r\nL 196.342188 17.798438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_6\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"196.342188\" xlink:href=\"#mc6b9dcd539\" y=\"235.238438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_3\">\r\n      <!-- 0 -->\r\n      <defs>\r\n       <path d=\"M 31.78125 66.40625 \r\nQ 24.171875 66.40625 20.328125 58.90625 \r\nQ 16.5 51.421875 16.5 36.375 \r\nQ 16.5 21.390625 20.328125 13.890625 \r\nQ 24.171875 6.390625 31.78125 6.390625 \r\nQ 39.453125 6.390625 43.28125 13.890625 \r\nQ 47.125 21.390625 47.125 36.375 \r\nQ 47.125 51.421875 43.28125 58.90625 \r\nQ 39.453125 66.40625 31.78125 66.40625 \r\nz\r\nM 31.78125 74.21875 \r\nQ 44.046875 74.21875 50.515625 64.515625 \r\nQ 56.984375 54.828125 56.984375 36.375 \r\nQ 56.984375 17.96875 50.515625 8.265625 \r\nQ 44.046875 -1.421875 31.78125 -1.421875 \r\nQ 19.53125 -1.421875 13.0625 8.265625 \r\nQ 6.59375 17.96875 6.59375 36.375 \r\nQ 6.59375 54.828125 13.0625 64.515625 \r\nQ 19.53125 74.21875 31.78125 74.21875 \r\nz\r\n\" id=\"DejaVuSans-48\"/>\r\n      </defs>\r\n      <g transform=\"translate(193.160938 249.836875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_4\">\r\n     <g id=\"line2d_7\">\r\n      <path clip-path=\"url(#p90b396ba74)\" d=\"M 257.214915 235.238438 \r\nL 257.214915 17.798438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_8\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"257.214915\" xlink:href=\"#mc6b9dcd539\" y=\"235.238438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_4\">\r\n      <!-- 2 -->\r\n      <g transform=\"translate(254.033665 249.836875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-50\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_5\">\r\n     <g id=\"line2d_9\">\r\n      <path clip-path=\"url(#p90b396ba74)\" d=\"M 318.087642 235.238438 \r\nL 318.087642 17.798438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_10\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"318.087642\" xlink:href=\"#mc6b9dcd539\" y=\"235.238438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_5\">\r\n      <!-- 4 -->\r\n      <g transform=\"translate(314.906392 249.836875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-52\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"text_6\">\r\n     <!-- 1e−2 -->\r\n     <defs>\r\n      <path d=\"M 12.40625 8.296875 \r\nL 28.515625 8.296875 \r\nL 28.515625 63.921875 \r\nL 10.984375 60.40625 \r\nL 10.984375 69.390625 \r\nL 28.421875 72.90625 \r\nL 38.28125 72.90625 \r\nL 38.28125 8.296875 \r\nL 54.390625 8.296875 \r\nL 54.390625 0 \r\nL 12.40625 0 \r\nz\r\n\" id=\"DejaVuSans-49\"/>\r\n      <path d=\"M 56.203125 29.59375 \r\nL 56.203125 25.203125 \r\nL 14.890625 25.203125 \r\nQ 15.484375 15.921875 20.484375 11.0625 \r\nQ 25.484375 6.203125 34.421875 6.203125 \r\nQ 39.59375 6.203125 44.453125 7.46875 \r\nQ 49.3125 8.734375 54.109375 11.28125 \r\nL 54.109375 2.78125 \r\nQ 49.265625 0.734375 44.1875 -0.34375 \r\nQ 39.109375 -1.421875 33.890625 -1.421875 \r\nQ 20.796875 -1.421875 13.15625 6.1875 \r\nQ 5.515625 13.8125 5.515625 26.8125 \r\nQ 5.515625 40.234375 12.765625 48.109375 \r\nQ 20.015625 56 32.328125 56 \r\nQ 43.359375 56 49.78125 48.890625 \r\nQ 56.203125 41.796875 56.203125 29.59375 \r\nz\r\nM 47.21875 32.234375 \r\nQ 47.125 39.59375 43.09375 43.984375 \r\nQ 39.0625 48.390625 32.421875 48.390625 \r\nQ 24.90625 48.390625 20.390625 44.140625 \r\nQ 15.875 39.890625 15.1875 32.171875 \r\nz\r\n\" id=\"DejaVuSans-101\"/>\r\n     </defs>\r\n     <g transform=\"translate(336.484375 262.515)scale(0.1 -0.1)\">\r\n      <use xlink:href=\"#DejaVuSans-49\"/>\r\n      <use x=\"63.623047\" xlink:href=\"#DejaVuSans-101\"/>\r\n      <use x=\"125.146484\" xlink:href=\"#DejaVuSans-8722\"/>\r\n      <use x=\"208.935547\" xlink:href=\"#DejaVuSans-50\"/>\r\n     </g>\r\n    </g>\r\n   </g>\r\n   <g id=\"matplotlib.axis_2\">\r\n    <g id=\"ytick_1\">\r\n     <g id=\"line2d_11\">\r\n      <path clip-path=\"url(#p90b396ba74)\" d=\"M 28.942188 217.827528 \r\nL 363.742188 217.827528 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_12\">\r\n      <defs>\r\n       <path d=\"M 0 0 \r\nL -3.5 0 \r\n\" id=\"m213b5aef1e\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n      </defs>\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m213b5aef1e\" y=\"217.827528\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_7\">\r\n      <!-- −3 -->\r\n      <defs>\r\n       <path d=\"M 40.578125 39.3125 \r\nQ 47.65625 37.796875 51.625 33 \r\nQ 55.609375 28.21875 55.609375 21.1875 \r\nQ 55.609375 10.40625 48.1875 4.484375 \r\nQ 40.765625 -1.421875 27.09375 -1.421875 \r\nQ 22.515625 -1.421875 17.65625 -0.515625 \r\nQ 12.796875 0.390625 7.625 2.203125 \r\nL 7.625 11.71875 \r\nQ 11.71875 9.328125 16.59375 8.109375 \r\nQ 21.484375 6.890625 26.8125 6.890625 \r\nQ 36.078125 6.890625 40.9375 10.546875 \r\nQ 45.796875 14.203125 45.796875 21.1875 \r\nQ 45.796875 27.640625 41.28125 31.265625 \r\nQ 36.765625 34.90625 28.71875 34.90625 \r\nL 20.21875 34.90625 \r\nL 20.21875 43.015625 \r\nL 29.109375 43.015625 \r\nQ 36.375 43.015625 40.234375 45.921875 \r\nQ 44.09375 48.828125 44.09375 54.296875 \r\nQ 44.09375 59.90625 40.109375 62.90625 \r\nQ 36.140625 65.921875 28.71875 65.921875 \r\nQ 24.65625 65.921875 20.015625 65.03125 \r\nQ 15.375 64.15625 9.8125 62.3125 \r\nL 9.8125 71.09375 \r\nQ 15.4375 72.65625 20.34375 73.4375 \r\nQ 25.25 74.21875 29.59375 74.21875 \r\nQ 40.828125 74.21875 47.359375 69.109375 \r\nQ 53.90625 64.015625 53.90625 55.328125 \r\nQ 53.90625 49.265625 50.4375 45.09375 \r\nQ 46.96875 40.921875 40.578125 39.3125 \r\nz\r\n\" id=\"DejaVuSans-51\"/>\r\n      </defs>\r\n      <g transform=\"translate(7.2 221.626747)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-51\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_2\">\r\n     <g id=\"line2d_13\">\r\n      <path clip-path=\"url(#p90b396ba74)\" d=\"M 28.942188 187.391165 \r\nL 363.742188 187.391165 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_14\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m213b5aef1e\" y=\"187.391165\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_8\">\r\n      <!-- −2 -->\r\n      <g transform=\"translate(7.2 191.190384)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-50\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_3\">\r\n     <g id=\"line2d_15\">\r\n      <path clip-path=\"url(#p90b396ba74)\" d=\"M 28.942188 156.954801 \r\nL 363.742188 156.954801 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_16\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m213b5aef1e\" y=\"156.954801\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_9\">\r\n      <!-- −1 -->\r\n      <g transform=\"translate(7.2 160.75402)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-49\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_4\">\r\n     <g id=\"line2d_17\">\r\n      <path clip-path=\"url(#p90b396ba74)\" d=\"M 28.942188 126.518438 \r\nL 363.742188 126.518438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_18\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m213b5aef1e\" y=\"126.518438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_10\">\r\n      <!-- 0 -->\r\n      <g transform=\"translate(15.579688 130.317656)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_5\">\r\n     <g id=\"line2d_19\">\r\n      <path clip-path=\"url(#p90b396ba74)\" d=\"M 28.942188 96.082074 \r\nL 363.742188 96.082074 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_20\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m213b5aef1e\" y=\"96.082074\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_11\">\r\n      <!-- 1 -->\r\n      <g transform=\"translate(15.579688 99.881293)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-49\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_6\">\r\n     <g id=\"line2d_21\">\r\n      <path clip-path=\"url(#p90b396ba74)\" d=\"M 28.942188 65.64571 \r\nL 363.742188 65.64571 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_22\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m213b5aef1e\" y=\"65.64571\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_12\">\r\n      <!-- 2 -->\r\n      <g transform=\"translate(15.579688 69.444929)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-50\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_7\">\r\n     <g id=\"line2d_23\">\r\n      <path clip-path=\"url(#p90b396ba74)\" d=\"M 28.942188 35.209347 \r\nL 363.742188 35.209347 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_24\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m213b5aef1e\" y=\"35.209347\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_13\">\r\n      <!-- 3 -->\r\n      <g transform=\"translate(15.579688 39.008565)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-51\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"text_14\">\r\n     <!-- 1e−2 -->\r\n     <g transform=\"translate(28.942188 14.798437)scale(0.1 -0.1)\">\r\n      <use xlink:href=\"#DejaVuSans-49\"/>\r\n      <use x=\"63.623047\" xlink:href=\"#DejaVuSans-101\"/>\r\n      <use x=\"125.146484\" xlink:href=\"#DejaVuSans-8722\"/>\r\n      <use x=\"208.935547\" xlink:href=\"#DejaVuSans-50\"/>\r\n     </g>\r\n    </g>\r\n   </g>\r\n   <g id=\"patch_3\">\r\n    <path d=\"M 28.942188 235.238438 \r\nL 28.942188 17.798437 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_4\">\r\n    <path d=\"M 363.742188 235.238438 \r\nL 363.742188 17.798437 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_5\">\r\n    <path d=\"M 28.942188 235.238438 \r\nL 363.742188 235.238438 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_6\">\r\n    <path d=\"M 28.942188 17.798438 \r\nL 363.742188 17.798438 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n  </g>\r\n </g>\r\n <defs>\r\n  <clipPath id=\"p90b396ba74\">\r\n   <rect height=\"217.44\" width=\"334.8\" x=\"28.942188\" y=\"17.798438\"/>\r\n  </clipPath>\r\n </defs>\r\n</svg>\r\n",
      "text/plain": "<Figure size 432x288 with 1 Axes>"
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "b = v / 2\n",
    "\n",
    "origin = [0], [0]\n",
    "plt.axis('equal')\n",
    "plt.grid()\n",
    "plt.ticklabel_format(style='sci', axis='both', scilimits=(0,0))\n",
    "plt.quiver(*origin, *b, scale=10)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "## 点乘（内积）\n",
    "\n",
    "- 点乘的结果是一个标量\n",
    "- 叉乘的结果是一个向量\n",
    "\n",
    "\n",
    "\\begin{equation} \\vec{v} \\cdot \\vec{s} = (v_{1} \\cdot s_{1}) + (v_{2} \\cdot s_{2}) ... + \\; (v_{n} \\cdot s_{n})\\end{equation}\n",
    "\n",
    "\n",
    "\\begin{equation} \\vec{v} \\cdot \\vec{s} = (2 \\cdot -3) + (1 \\cdot 2) = -6 + 2 = -4\\end{equation}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": "-4\n-4\n"
    }
   ],
   "source": [
    "v = np.array([2,1])\n",
    "s = np.array([-3,2])\n",
    "d = np.dot(v,s)             # 方法名是 dot\n",
    "print(d)\n",
    "print(v @ s)                # 或者直接用 @ 操作符"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "### 用点乘计算向量的余弦\n",
    "\n",
    "\n",
    "$$ \\vec{v} \\cdot \\vec{s} = \\|\\vec{v} \\|\\|\\vec{s}\\| \\cos (\\theta) $$ \n",
    "\n",
    "\n",
    "$$ \\cos(\\theta) = \\frac{\\vec{v} \\cdot \\vec{s}}{\\|\\vec{v} \\|\\|\\vec{s}\\|} $$\n",
    "\n",
    "\n",
    "$$ \\cos(\\theta) = \\frac{(2 \\cdot-3) + (-3 \\cdot 2)}{\\sqrt{2^{2} + 1^{2}} \\times \\sqrt{-3^{2} + 2^{2}}} $$\n",
    "\n",
    "\n",
    "$$\\cos(\\theta) = \\frac{-4}{8.0622577483}$$\n",
    "\n",
    "\n",
    "$$\\cos(\\theta) = -0.496138938357 $$\n",
    "\n",
    "$$\\theta \\approx 119.74 $$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": "119.74488129694222"
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "v = np.array([2,1])\n",
    "s = np.array([-3,2])\n",
    "\n",
    "vMag = np.linalg.norm(v)               # 计算标量\n",
    "sMag = np.linalg.norm(s)\n",
    "\n",
    "cos = (v @ s) / (vMag * sMag)          # 点乘除标量积是余弦\n",
    "\n",
    "theta = math.degrees(math.acos(cos))\n",
    "\n",
    "theta"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true,
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "## 叉乘（外积）\n",
    "\n",
    "\n",
    "\\begin{equation}\\vec{p} = \\begin{bmatrix}2 \\\\ 3 \\\\ 1 \\end{bmatrix}\\;\\; \\vec{q} = \\begin{bmatrix}1 \\\\ 2 \\\\ -2 \\end{bmatrix}\\end{equation}\n",
    "\n",
    "\n",
    "\\begin{equation}r_{1} = p_{2}q_{3} - p_{3}q_{2}\\end{equation}\n",
    "\\begin{equation}r_{2} = p_{3}q_{1} - p_{1}q_{3}\\end{equation}\n",
    "\\begin{equation}r_{3} = p_{1}q_{2} - p_{2}q_{1}\\end{equation}\n",
    "\n",
    "\n",
    "\\begin{equation}\\vec{r} = \\vec{p} \\times \\vec{q} = \\begin{bmatrix}(3 \\cdot -2) - (1 \\cdot 2) \\\\ (1 \\cdot 1) - (2 \\cdot -2) \\\\ (2 \\cdot 2) - (3 \\cdot 1) \\end{bmatrix} = \\begin{bmatrix}-6 - 2 \\\\ 1 - -4 \\\\ 4 - 3 \\end{bmatrix} = \\begin{bmatrix}-8 \\\\ 5 \\\\ 1 \\end{bmatrix}\\end{equation}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": "array([-8,  5,  1])"
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "p = np.array([2,3,1])\n",
    "q = np.array([1,2,-2])\n",
    "r = np.cross(p,q)\n",
    "r"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "### 理解向量外积\n",
    "\n",
    "- 只知道定义和方法cross是不够的\n",
    "- 应用场景：求共点向量的法向量\n",
    "- 需要三维可视化\n",
    "\n",
    "> 编程实现！"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "from mpl_toolkits.mplot3d import Axes3D\n",
    "\n",
    "def vec3d_range(m):\n",
    "    a = [(min(0,m[:,i].min()), m[:,i].max()) for i in [0, 1, 2]]\n",
    "    return np.array(a) * 1.2\n",
    "\n",
    "def vec3d_label(v):\n",
    "    return '(' + ','.join(str(i) for i in v) + ')'\n",
    "    \n",
    "def vec3d_cord(m):\n",
    "    return zip(*np.concatenate((np.zeros(m.shape), m), axis=1))\n",
    "\n",
    "def vec3d_color(m):\n",
    "    l = np.random.rand(*m.shape)\n",
    "    return [*l, *[i for s in [*zip(l,l)] for i in s]]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "from IPython.core.interactiveshell import InteractiveShell\n",
    "InteractiveShell.ast_node_interactivity = \"last_expr\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "435941dc2ca845058149f946cded2f0a",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\r\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\r\n  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n<!-- Created with matplotlib (https://matplotlib.org/) -->\r\n<svg height=\"231.84pt\" version=\"1.1\" viewBox=\"0 0 349.2 231.84\" width=\"349.2pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n <defs>\r\n  <style type=\"text/css\">\r\n*{stroke-linecap:butt;stroke-linejoin:round;}\r\n  </style>\r\n </defs>\r\n <g id=\"figure_1\">\r\n  <g id=\"patch_1\">\r\n   <path d=\"M 0 231.84 \r\nL 349.2 231.84 \r\nL 349.2 0 \r\nL 0 0 \r\nz\r\n\" style=\"fill:none;\"/>\r\n  </g>\r\n  <g id=\"patch_2\">\r\n   <path d=\"M 7.2 224.64 \r\nL 342 224.64 \r\nL 342 7.2 \r\nL 7.2 7.2 \r\nz\r\n\" style=\"fill:#ffffff;\"/>\r\n  </g>\r\n  <g id=\"pane3d_1\">\r\n   <g id=\"patch_3\">\r\n    <path d=\"M 51.582914 176.593423 \r\nL 147.404425 123.282062 \r\nL 145.809099 21.412801 \r\nL 44.64491 69.311962 \r\n\" style=\"fill:#f2f2f2;opacity:0.5;stroke:#f2f2f2;stroke-linejoin:miter;\"/>\r\n   </g>\r\n  </g>\r\n  <g id=\"pane3d_2\">\r\n   <g id=\"patch_4\">\r\n    <path d=\"M 147.404425 123.282062 \r\nL 302.626265 153.086553 \r\nL 309.120561 48.145466 \r\nL 145.809099 21.412801 \r\n\" style=\"fill:#e6e6e6;opacity:0.5;stroke:#e6e6e6;stroke-linejoin:miter;\"/>\r\n   </g>\r\n  </g>\r\n  <g id=\"pane3d_3\">\r\n   <g id=\"patch_5\">\r\n    <path d=\"M 51.582914 176.593423 \r\nL 214.897263 211.305609 \r\nL 302.626265 153.086553 \r\nL 147.404425 123.282062 \r\n\" style=\"fill:#ececec;opacity:0.5;stroke:#ececec;stroke-linejoin:miter;\"/>\r\n   </g>\r\n  </g>\r\n  <g id=\"axis3d_1\">\r\n   <g id=\"line2d_1\">\r\n    <path d=\"M 51.582914 176.593423 \r\nL 214.897263 211.305609 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"text_1\">\r\n    <!-- X -->\r\n    <defs>\r\n     <path d=\"M 6.296875 72.90625 \r\nL 16.890625 72.90625 \r\nL 35.015625 45.796875 \r\nL 53.21875 72.90625 \r\nL 63.8125 72.90625 \r\nL 40.375 37.890625 \r\nL 65.375 0 \r\nL 54.78125 0 \r\nL 34.28125 31 \r\nL 13.625 0 \r\nL 2.984375 0 \r\nL 29 38.921875 \r\nz\r\n\" id=\"DejaVuSans-88\"/>\r\n    </defs>\r\n    <g transform=\"translate(111.051154 224.825263)scale(0.1 -0.1)\">\r\n     <use xlink:href=\"#DejaVuSans-88\"/>\r\n    </g>\r\n   </g>\r\n   <g id=\"Line3DCollection_1\">\r\n    <path d=\"M 74.827213 181.533959 \r\nL 169.560552 127.536309 \r\nL 169.076429 25.22146 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-width:0.8;\"/>\r\n    <path d=\"M 100.306818 186.949606 \r\nL 193.823023 132.195 \r\nL 194.572335 29.394918 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-width:0.8;\"/>\r\n    <path d=\"M 126.158497 192.444336 \r\nL 218.413842 136.916738 \r\nL 220.430995 33.627756 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-width:0.8;\"/>\r\n    <path d=\"M 152.39046 198.019895 \r\nL 243.33972 141.702811 \r\nL 246.660207 37.921249 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-width:0.8;\"/>\r\n    <path d=\"M 179.01116 203.678079 \r\nL 268.607551 146.554544 \r\nL 273.267993 42.276712 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-width:0.8;\"/>\r\n    <path d=\"M 206.029303 209.42074 \r\nL 294.224421 151.473296 \r\nL 300.26261 46.695496 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"xtick_1\">\r\n    <g id=\"line2d_2\">\r\n     <path d=\"M 75.64361 181.068616 \r\nL 73.191361 182.466389 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.8;\"/>\r\n    </g>\r\n    <g id=\"text_2\">\r\n     <!-- −8 -->\r\n     <defs>\r\n      <path d=\"M 10.59375 35.5 \r\nL 73.1875 35.5 \r\nL 73.1875 27.203125 \r\nL 10.59375 27.203125 \r\nz\r\n\" id=\"DejaVuSans-8722\"/>\r\n      <path d=\"M 31.78125 34.625 \r\nQ 24.75 34.625 20.71875 30.859375 \r\nQ 16.703125 27.09375 16.703125 20.515625 \r\nQ 16.703125 13.921875 20.71875 10.15625 \r\nQ 24.75 6.390625 31.78125 6.390625 \r\nQ 38.8125 6.390625 42.859375 10.171875 \r\nQ 46.921875 13.96875 46.921875 20.515625 \r\nQ 46.921875 27.09375 42.890625 30.859375 \r\nQ 38.875 34.625 31.78125 34.625 \r\nz\r\nM 21.921875 38.8125 \r\nQ 15.578125 40.375 12.03125 44.71875 \r\nQ 8.5 49.078125 8.5 55.328125 \r\nQ 8.5 64.0625 14.71875 69.140625 \r\nQ 20.953125 74.21875 31.78125 74.21875 \r\nQ 42.671875 74.21875 48.875 69.140625 \r\nQ 55.078125 64.0625 55.078125 55.328125 \r\nQ 55.078125 49.078125 51.53125 44.71875 \r\nQ 48 40.375 41.703125 38.8125 \r\nQ 48.828125 37.15625 52.796875 32.3125 \r\nQ 56.78125 27.484375 56.78125 20.515625 \r\nQ 56.78125 9.90625 50.3125 4.234375 \r\nQ 43.84375 -1.421875 31.78125 -1.421875 \r\nQ 19.734375 -1.421875 13.25 4.234375 \r\nQ 6.78125 9.90625 6.78125 20.515625 \r\nQ 6.78125 27.484375 10.78125 32.3125 \r\nQ 14.796875 37.15625 21.921875 38.8125 \r\nz\r\nM 18.3125 54.390625 \r\nQ 18.3125 48.734375 21.84375 45.5625 \r\nQ 25.390625 42.390625 31.78125 42.390625 \r\nQ 38.140625 42.390625 41.71875 45.5625 \r\nQ 45.3125 48.734375 45.3125 54.390625 \r\nQ 45.3125 60.0625 41.71875 63.234375 \r\nQ 38.140625 66.40625 31.78125 66.40625 \r\nQ 25.390625 66.40625 21.84375 63.234375 \r\nQ 18.3125 60.0625 18.3125 54.390625 \r\nz\r\n\" id=\"DejaVuSans-56\"/>\r\n     </defs>\r\n     <g transform=\"translate(59.70766 201.983229)scale(0.1 -0.1)\">\r\n      <use xlink:href=\"#DejaVuSans-8722\"/>\r\n      <use x=\"83.789062\" xlink:href=\"#DejaVuSans-56\"/>\r\n     </g>\r\n    </g>\r\n   </g>\r\n   <g id=\"xtick_2\">\r\n    <g id=\"line2d_3\">\r\n     <path d=\"M 101.113145 186.477494 \r\nL 98.691123 187.89561 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.8;\"/>\r\n    </g>\r\n    <g id=\"text_3\">\r\n     <!-- −6 -->\r\n     <defs>\r\n      <path d=\"M 33.015625 40.375 \r\nQ 26.375 40.375 22.484375 35.828125 \r\nQ 18.609375 31.296875 18.609375 23.390625 \r\nQ 18.609375 15.53125 22.484375 10.953125 \r\nQ 26.375 6.390625 33.015625 6.390625 \r\nQ 39.65625 6.390625 43.53125 10.953125 \r\nQ 47.40625 15.53125 47.40625 23.390625 \r\nQ 47.40625 31.296875 43.53125 35.828125 \r\nQ 39.65625 40.375 33.015625 40.375 \r\nz\r\nM 52.59375 71.296875 \r\nL 52.59375 62.3125 \r\nQ 48.875 64.0625 45.09375 64.984375 \r\nQ 41.3125 65.921875 37.59375 65.921875 \r\nQ 27.828125 65.921875 22.671875 59.328125 \r\nQ 17.53125 52.734375 16.796875 39.40625 \r\nQ 19.671875 43.65625 24.015625 45.921875 \r\nQ 28.375 48.1875 33.59375 48.1875 \r\nQ 44.578125 48.1875 50.953125 41.515625 \r\nQ 57.328125 34.859375 57.328125 23.390625 \r\nQ 57.328125 12.15625 50.6875 5.359375 \r\nQ 44.046875 -1.421875 33.015625 -1.421875 \r\nQ 20.359375 -1.421875 13.671875 8.265625 \r\nQ 6.984375 17.96875 6.984375 36.375 \r\nQ 6.984375 53.65625 15.1875 63.9375 \r\nQ 23.390625 74.21875 37.203125 74.21875 \r\nQ 40.921875 74.21875 44.703125 73.484375 \r\nQ 48.484375 72.75 52.59375 71.296875 \r\nz\r\n\" id=\"DejaVuSans-54\"/>\r\n     </defs>\r\n     <g transform=\"translate(85.184387 207.503571)scale(0.1 -0.1)\">\r\n      <use xlink:href=\"#DejaVuSans-8722\"/>\r\n      <use x=\"83.789062\" xlink:href=\"#DejaVuSans-54\"/>\r\n     </g>\r\n    </g>\r\n   </g>\r\n   <g id=\"xtick_3\">\r\n    <g id=\"line2d_4\">\r\n     <path d=\"M 126.954371 191.965307 \r\nL 124.563724 193.404214 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.8;\"/>\r\n    </g>\r\n    <g id=\"text_4\">\r\n     <!-- −4 -->\r\n     <defs>\r\n      <path d=\"M 37.796875 64.3125 \r\nL 12.890625 25.390625 \r\nL 37.796875 25.390625 \r\nz\r\nM 35.203125 72.90625 \r\nL 47.609375 72.90625 \r\nL 47.609375 25.390625 \r\nL 58.015625 25.390625 \r\nL 58.015625 17.1875 \r\nL 47.609375 17.1875 \r\nL 47.609375 0 \r\nL 37.796875 0 \r\nL 37.796875 17.1875 \r\nL 4.890625 17.1875 \r\nL 4.890625 26.703125 \r\nz\r\n\" id=\"DejaVuSans-52\"/>\r\n     </defs>\r\n     <g transform=\"translate(111.03393 213.104695)scale(0.1 -0.1)\">\r\n      <use xlink:href=\"#DejaVuSans-8722\"/>\r\n      <use x=\"83.789062\" xlink:href=\"#DejaVuSans-52\"/>\r\n     </g>\r\n    </g>\r\n   </g>\r\n   <g id=\"xtick_4\">\r\n    <g id=\"line2d_5\">\r\n     <path d=\"M 153.175486 197.533795 \r\nL 150.817403 198.993954 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.8;\"/>\r\n    </g>\r\n    <g id=\"text_5\">\r\n     <!-- −2 -->\r\n     <defs>\r\n      <path d=\"M 19.1875 8.296875 \r\nL 53.609375 8.296875 \r\nL 53.609375 0 \r\nL 7.328125 0 \r\nL 7.328125 8.296875 \r\nQ 12.9375 14.109375 22.625 23.890625 \r\nQ 32.328125 33.6875 34.8125 36.53125 \r\nQ 39.546875 41.84375 41.421875 45.53125 \r\nQ 43.3125 49.21875 43.3125 52.78125 \r\nQ 43.3125 58.59375 39.234375 62.25 \r\nQ 35.15625 65.921875 28.609375 65.921875 \r\nQ 23.96875 65.921875 18.8125 64.3125 \r\nQ 13.671875 62.703125 7.8125 59.421875 \r\nL 7.8125 69.390625 \r\nQ 13.765625 71.78125 18.9375 73 \r\nQ 24.125 74.21875 28.421875 74.21875 \r\nQ 39.75 74.21875 46.484375 68.546875 \r\nQ 53.21875 62.890625 53.21875 53.421875 \r\nQ 53.21875 48.921875 51.53125 44.890625 \r\nQ 49.859375 40.875 45.40625 35.40625 \r\nQ 44.1875 33.984375 37.640625 27.21875 \r\nQ 31.109375 20.453125 19.1875 8.296875 \r\nz\r\n\" id=\"DejaVuSans-50\"/>\r\n     </defs>\r\n     <g transform=\"translate(137.264535 218.788389)scale(0.1 -0.1)\">\r\n      <use xlink:href=\"#DejaVuSans-8722\"/>\r\n      <use x=\"83.789062\" xlink:href=\"#DejaVuSans-50\"/>\r\n     </g>\r\n    </g>\r\n   </g>\r\n   <g id=\"xtick_5\">\r\n    <g id=\"line2d_6\">\r\n     <path d=\"M 179.784928 203.184752 \r\nL 177.460641 204.666636 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.8;\"/>\r\n    </g>\r\n    <g id=\"text_6\">\r\n     <!-- 0 -->\r\n     <defs>\r\n      <path d=\"M 31.78125 66.40625 \r\nQ 24.171875 66.40625 20.328125 58.90625 \r\nQ 16.5 51.421875 16.5 36.375 \r\nQ 16.5 21.390625 20.328125 13.890625 \r\nQ 24.171875 6.390625 31.78125 6.390625 \r\nQ 39.453125 6.390625 43.28125 13.890625 \r\nQ 47.125 21.390625 47.125 36.375 \r\nQ 47.125 51.421875 43.28125 58.90625 \r\nQ 39.453125 66.40625 31.78125 66.40625 \r\nz\r\nM 31.78125 74.21875 \r\nQ 44.046875 74.21875 50.515625 64.515625 \r\nQ 56.984375 54.828125 56.984375 36.375 \r\nQ 56.984375 17.96875 50.515625 8.265625 \r\nQ 44.046875 -1.421875 31.78125 -1.421875 \r\nQ 19.53125 -1.421875 13.0625 8.265625 \r\nQ 6.59375 17.96875 6.59375 36.375 \r\nQ 6.59375 54.828125 13.0625 64.515625 \r\nQ 19.53125 74.21875 31.78125 74.21875 \r\nz\r\n\" id=\"DejaVuSans-48\"/>\r\n     </defs>\r\n     <g transform=\"translate(168.074534 224.556491)scale(0.1 -0.1)\">\r\n      <use xlink:href=\"#DejaVuSans-48\"/>\r\n     </g>\r\n    </g>\r\n   </g>\r\n   <g id=\"xtick_6\">\r\n    <g id=\"line2d_7\">\r\n     <path d=\"M 206.791388 208.920022 \r\nL 204.502174 210.42412 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.8;\"/>\r\n    </g>\r\n    <g id=\"text_7\">\r\n     <!-- 2 -->\r\n     <g transform=\"translate(195.092982 230.410895)scale(0.1 -0.1)\">\r\n      <use xlink:href=\"#DejaVuSans-50\"/>\r\n     </g>\r\n    </g>\r\n   </g>\r\n  </g>\r\n  <g id=\"axis3d_2\">\r\n   <g id=\"line2d_8\">\r\n    <path d=\"M 302.626265 153.086553 \r\nL 214.897263 211.305609 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"text_8\">\r\n    <!-- Y -->\r\n    <defs>\r\n     <path d=\"M -0.203125 72.90625 \r\nL 10.40625 72.90625 \r\nL 30.609375 42.921875 \r\nL 50.6875 72.90625 \r\nL 61.28125 72.90625 \r\nL 35.5 34.71875 \r\nL 35.5 0 \r\nL 25.59375 0 \r\nL 25.59375 34.71875 \r\nz\r\n\" id=\"DejaVuSans-89\"/>\r\n    </defs>\r\n    <g transform=\"translate(285.564598 207.381712)scale(0.1 -0.1)\">\r\n     <use xlink:href=\"#DejaVuSans-89\"/>\r\n    </g>\r\n   </g>\r\n   <g id=\"Line3DCollection_2\">\r\n    <path d=\"M 46.829722 68.277499 \r\nL 53.644461 175.446459 \r\nL 216.790908 210.048941 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-width:0.8;\"/>\r\n    <path d=\"M 64.055222 60.121579 \r\nL 69.910258 166.396802 \r\nL 231.722348 200.140082 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-width:0.8;\"/>\r\n    <path d=\"M 80.843086 52.172871 \r\nL 85.783577 157.565505 \r\nL 246.277108 190.481197 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-width:0.8;\"/>\r\n    <path d=\"M 97.209785 44.423576 \r\nL 101.278453 148.944758 \r\nL 260.469264 181.062944 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-width:0.8;\"/>\r\n    <path d=\"M 113.17097 36.866283 \r\nL 116.408261 140.527122 \r\nL 274.3122 171.876442 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-width:0.8;\"/>\r\n    <path d=\"M 128.741529 29.493944 \r\nL 131.185752 132.305501 \r\nL 287.818648 162.913241 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-width:0.8;\"/>\r\n    <path d=\"M 143.935627 22.299851 \r\nL 145.623091 124.273127 \r\nL 301.000731 154.165296 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"xtick_7\">\r\n    <g id=\"line2d_9\">\r\n     <path d=\"M 215.425303 209.759304 \r\nL 219.52518 210.628866 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.8;\"/>\r\n    </g>\r\n    <g id=\"text_9\">\r\n     <!-- 0 -->\r\n     <g transform=\"translate(227.09468 228.895776)scale(0.1 -0.1)\">\r\n      <use xlink:href=\"#DejaVuSans-48\"/>\r\n     </g>\r\n    </g>\r\n   </g>\r\n   <g id=\"xtick_8\">\r\n    <g id=\"line2d_10\">\r\n     <path d=\"M 230.368678 199.857796 \r\nL 234.432686 200.705279 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.8;\"/>\r\n    </g>\r\n    <g id=\"text_10\">\r\n     <!-- 1 -->\r\n     <defs>\r\n      <path d=\"M 12.40625 8.296875 \r\nL 28.515625 8.296875 \r\nL 28.515625 63.921875 \r\nL 10.984375 60.40625 \r\nL 10.984375 69.390625 \r\nL 28.421875 72.90625 \r\nL 38.28125 72.90625 \r\nL 38.28125 8.296875 \r\nL 54.390625 8.296875 \r\nL 54.390625 0 \r\nL 12.40625 0 \r\nz\r\n\" id=\"DejaVuSans-49\"/>\r\n     </defs>\r\n     <g transform=\"translate(241.84544 218.84895)scale(0.1 -0.1)\">\r\n      <use xlink:href=\"#DejaVuSans-49\"/>\r\n     </g>\r\n    </g>\r\n   </g>\r\n   <g id=\"xtick_9\">\r\n    <g id=\"line2d_11\">\r\n     <path d=\"M 244.935209 190.205986 \r\nL 248.963841 191.03222 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.8;\"/>\r\n    </g>\r\n    <g id=\"text_11\">\r\n     <!-- 2 -->\r\n     <g transform=\"translate(256.224287 209.055436)scale(0.1 -0.1)\">\r\n      <use xlink:href=\"#DejaVuSans-50\"/>\r\n     </g>\r\n    </g>\r\n   </g>\r\n   <g id=\"xtick_10\">\r\n    <g id=\"line2d_12\">\r\n     <path d=\"M 259.138973 180.794545 \r\nL 263.132719 181.60032 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.8;\"/>\r\n    </g>\r\n    <g id=\"text_12\">\r\n     <!-- 3 -->\r\n     <defs>\r\n      <path d=\"M 40.578125 39.3125 \r\nQ 47.65625 37.796875 51.625 33 \r\nQ 55.609375 28.21875 55.609375 21.1875 \r\nQ 55.609375 10.40625 48.1875 4.484375 \r\nQ 40.765625 -1.421875 27.09375 -1.421875 \r\nQ 22.515625 -1.421875 17.65625 -0.515625 \r\nQ 12.796875 0.390625 7.625 2.203125 \r\nL 7.625 11.71875 \r\nQ 11.71875 9.328125 16.59375 8.109375 \r\nQ 21.484375 6.890625 26.8125 6.890625 \r\nQ 36.078125 6.890625 40.9375 10.546875 \r\nQ 45.796875 14.203125 45.796875 21.1875 \r\nQ 45.796875 27.640625 41.28125 31.265625 \r\nQ 36.765625 34.90625 28.71875 34.90625 \r\nL 20.21875 34.90625 \r\nL 20.21875 43.015625 \r\nL 29.109375 43.015625 \r\nQ 36.375 43.015625 40.234375 45.921875 \r\nQ 44.09375 48.828125 44.09375 54.296875 \r\nQ 44.09375 59.90625 40.109375 62.90625 \r\nQ 36.140625 65.921875 28.71875 65.921875 \r\nQ 24.65625 65.921875 20.015625 65.03125 \r\nQ 15.375 64.15625 9.8125 62.3125 \r\nL 9.8125 71.09375 \r\nQ 15.4375 72.65625 20.34375 73.4375 \r\nQ 25.25 74.21875 29.59375 74.21875 \r\nQ 40.828125 74.21875 47.359375 69.109375 \r\nQ 53.90625 64.015625 53.90625 55.328125 \r\nQ 53.90625 49.265625 50.4375 45.09375 \r\nQ 46.96875 40.921875 40.578125 39.3125 \r\nz\r\n\" id=\"DejaVuSans-51\"/>\r\n     </defs>\r\n     <g transform=\"translate(270.245112 199.505772)scale(0.1 -0.1)\">\r\n      <use xlink:href=\"#DejaVuSans-51\"/>\r\n     </g>\r\n    </g>\r\n   </g>\r\n   <g id=\"xtick_11\">\r\n    <g id=\"line2d_13\">\r\n     <path d=\"M 272.993355 171.614606 \r\nL 276.952702 172.400671 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.8;\"/>\r\n    </g>\r\n    <g id=\"text_13\">\r\n     <!-- 4 -->\r\n     <g transform=\"translate(283.921122 190.190964)scale(0.1 -0.1)\">\r\n      <use xlink:href=\"#DejaVuSans-52\"/>\r\n     </g>\r\n    </g>\r\n   </g>\r\n   <g id=\"xtick_12\">\r\n    <g id=\"line2d_14\">\r\n     <path d=\"M 286.511089 162.65773 \r\nL 290.43652 163.424801 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.8;\"/>\r\n    </g>\r\n    <g id=\"text_14\">\r\n     <!-- 5 -->\r\n     <defs>\r\n      <path d=\"M 10.796875 72.90625 \r\nL 49.515625 72.90625 \r\nL 49.515625 64.59375 \r\nL 19.828125 64.59375 \r\nL 19.828125 46.734375 \r\nQ 21.96875 47.46875 24.109375 47.828125 \r\nQ 26.265625 48.1875 28.421875 48.1875 \r\nQ 40.625 48.1875 47.75 41.5 \r\nQ 54.890625 34.8125 54.890625 23.390625 \r\nQ 54.890625 11.625 47.5625 5.09375 \r\nQ 40.234375 -1.421875 26.90625 -1.421875 \r\nQ 22.3125 -1.421875 17.546875 -0.640625 \r\nQ 12.796875 0.140625 7.71875 1.703125 \r\nL 7.71875 11.625 \r\nQ 12.109375 9.234375 16.796875 8.0625 \r\nQ 21.484375 6.890625 26.703125 6.890625 \r\nQ 35.15625 6.890625 40.078125 11.328125 \r\nQ 45.015625 15.765625 45.015625 23.390625 \r\nQ 45.015625 31 40.078125 35.4375 \r\nQ 35.15625 39.890625 26.703125 39.890625 \r\nQ 22.75 39.890625 18.8125 39.015625 \r\nQ 14.890625 38.140625 10.796875 36.28125 \r\nz\r\n\" id=\"DejaVuSans-53\"/>\r\n     </defs>\r\n     <g transform=\"translate(297.264882 181.102454)scale(0.1 -0.1)\">\r\n      <use xlink:href=\"#DejaVuSans-53\"/>\r\n     </g>\r\n    </g>\r\n   </g>\r\n   <g id=\"xtick_13\">\r\n    <g id=\"line2d_15\">\r\n     <path d=\"M 299.7043 153.915884 \r\nL 303.596291 154.664641 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.8;\"/>\r\n    </g>\r\n    <g id=\"text_15\">\r\n     <!-- 6 -->\r\n     <g transform=\"translate(310.288356 172.232092)scale(0.1 -0.1)\">\r\n      <use xlink:href=\"#DejaVuSans-54\"/>\r\n     </g>\r\n    </g>\r\n   </g>\r\n  </g>\r\n  <g id=\"axis3d_3\">\r\n   <g id=\"line2d_16\">\r\n    <path d=\"M 302.626265 153.086553 \r\nL 309.120561 48.145466 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"text_16\">\r\n    <!-- Z -->\r\n    <defs>\r\n     <path d=\"M 5.609375 72.90625 \r\nL 62.890625 72.90625 \r\nL 62.890625 65.375 \r\nL 16.796875 8.296875 \r\nL 64.015625 8.296875 \r\nL 64.015625 0 \r\nL 4.5 0 \r\nL 4.5 7.515625 \r\nL 50.59375 64.59375 \r\nL 5.609375 64.59375 \r\nz\r\n\" id=\"DejaVuSans-90\"/>\r\n    </defs>\r\n    <g transform=\"translate(345.445262 100.971155)scale(0.1 -0.1)\">\r\n     <use xlink:href=\"#DejaVuSans-90\"/>\r\n    </g>\r\n   </g>\r\n   <g id=\"Line3DCollection_3\">\r\n    <path d=\"M 303.246349 143.066647 \r\nL 147.251801 113.536277 \r\nL 50.921495 166.365994 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-width:0.8;\"/>\r\n    <path d=\"M 304.505385 122.721924 \r\nL 146.942104 93.760614 \r\nL 49.577862 145.589569 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-width:0.8;\"/>\r\n    <path d=\"M 305.790226 101.960237 \r\nL 146.626329 73.59687 \r\nL 48.205767 124.373036 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-width:0.8;\"/>\r\n    <path d=\"M 307.101671 80.768634 \r\nL 146.304296 53.033507 \r\nL 46.804295 102.702261 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-width:0.8;\"/>\r\n    <path d=\"M 308.440557 59.133622 \r\nL 145.975816 32.058528 \r\nL 45.372494 80.562498 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"xtick_14\">\r\n    <g id=\"line2d_17\">\r\n     <path d=\"M 301.944582 142.820218 \r\nL 305.852601 143.560021 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.8;\"/>\r\n    </g>\r\n    <g id=\"text_17\">\r\n     <!-- −1.0 -->\r\n     <defs>\r\n      <path d=\"M 10.6875 12.40625 \r\nL 21 12.40625 \r\nL 21 0 \r\nL 10.6875 0 \r\nz\r\n\" id=\"DejaVuSans-46\"/>\r\n     </defs>\r\n     <g transform=\"translate(310.590303 148.865832)scale(0.1 -0.1)\">\r\n      <use xlink:href=\"#DejaVuSans-8722\"/>\r\n      <use x=\"83.789062\" xlink:href=\"#DejaVuSans-49\"/>\r\n      <use x=\"147.412109\" xlink:href=\"#DejaVuSans-46\"/>\r\n      <use x=\"179.199219\" xlink:href=\"#DejaVuSans-48\"/>\r\n     </g>\r\n    </g>\r\n   </g>\r\n   <g id=\"xtick_15\">\r\n    <g id=\"line2d_18\">\r\n     <path d=\"M 303.189976 122.480142 \r\nL 307.138978 123.205998 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.8;\"/>\r\n    </g>\r\n    <g id=\"text_18\">\r\n     <!-- −0.5 -->\r\n     <g transform=\"translate(312.043254 128.555081)scale(0.1 -0.1)\">\r\n      <use xlink:href=\"#DejaVuSans-8722\"/>\r\n      <use x=\"83.789062\" xlink:href=\"#DejaVuSans-48\"/>\r\n      <use x=\"147.412109\" xlink:href=\"#DejaVuSans-46\"/>\r\n      <use x=\"179.199219\" xlink:href=\"#DejaVuSans-53\"/>\r\n     </g>\r\n    </g>\r\n   </g>\r\n   <g id=\"xtick_16\">\r\n    <g id=\"line2d_19\">\r\n     <path d=\"M 304.460886 101.723345 \r\nL 308.451738 102.434525 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.8;\"/>\r\n    </g>\r\n    <g id=\"text_19\">\r\n     <!-- 0.0 -->\r\n     <g transform=\"translate(317.71575 107.82914)scale(0.1 -0.1)\">\r\n      <use xlink:href=\"#DejaVuSans-48\"/>\r\n      <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\r\n      <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\r\n     </g>\r\n    </g>\r\n   </g>\r\n   <g id=\"xtick_17\">\r\n    <g id=\"line2d_20\">\r\n     <path d=\"M 305.758103 80.536888 \r\nL 309.791702 81.232623 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.8;\"/>\r\n    </g>\r\n    <g id=\"text_20\">\r\n     <!-- 0.5 -->\r\n     <g transform=\"translate(319.229023 86.675147)scale(0.1 -0.1)\">\r\n      <use xlink:href=\"#DejaVuSans-48\"/>\r\n      <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\r\n      <use x=\"95.410156\" xlink:href=\"#DejaVuSans-53\"/>\r\n     </g>\r\n    </g>\r\n   </g>\r\n   <g id=\"xtick_18\">\r\n    <g id=\"line2d_21\">\r\n     <path d=\"M 307.082453 58.907291 \r\nL 311.159722 59.586776 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.8;\"/>\r\n    </g>\r\n    <g id=\"text_21\">\r\n     <!-- 1.0 -->\r\n     <g transform=\"translate(320.773876 65.079703)scale(0.1 -0.1)\">\r\n      <use xlink:href=\"#DejaVuSans-49\"/>\r\n      <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\r\n      <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\r\n     </g>\r\n    </g>\r\n   </g>\r\n  </g>\r\n  <g id=\"axes_1\">\r\n   <g id=\"Line3DCollection_4\">\r\n    <path clip-path=\"url(#p34571b867d)\" d=\"M 255.393826 83.053967 \r\nL 180.99362 149.065762 \r\n\" style=\"fill:none;stroke:#5a80d2;stroke-width:1.5;\"/>\r\n    <path clip-path=\"url(#p34571b867d)\" d=\"M 224.497028 175.65766 \r\nL 180.99362 149.065762 \r\n\" style=\"fill:none;stroke:#61381f;stroke-width:1.5;\"/>\r\n    <path clip-path=\"url(#p34571b867d)\" d=\"M 152.356381 44.209449 \r\nL 180.99362 149.065762 \r\n\" style=\"fill:none;stroke:#d43a58;stroke-width:1.5;\"/>\r\n    <path clip-path=\"url(#p34571b867d)\" d=\"M 255.393826 83.053967 \r\nL 248.649208 93.394742 \r\n\" style=\"fill:none;stroke:#5a80d2;stroke-width:1.5;\"/>\r\n    <path clip-path=\"url(#p34571b867d)\" d=\"M 255.393826 83.053967 \r\nL 247.891795 85.333869 \r\n\" style=\"fill:none;stroke:#5a80d2;stroke-width:1.5;\"/>\r\n    <path clip-path=\"url(#p34571b867d)\" d=\"M 224.497028 175.65766 \r\nL 219.911108 175.782692 \r\n\" style=\"fill:none;stroke:#61381f;stroke-width:1.5;\"/>\r\n    <path clip-path=\"url(#p34571b867d)\" d=\"M 224.497028 175.65766 \r\nL 221.004391 170.588842 \r\n\" style=\"fill:none;stroke:#61381f;stroke-width:1.5;\"/>\r\n    <path clip-path=\"url(#p34571b867d)\" d=\"M 152.356381 44.209449 \r\nL 154.996928 64.011368 \r\n\" style=\"fill:none;stroke:#d43a58;stroke-width:1.5;\"/>\r\n    <path clip-path=\"url(#p34571b867d)\" d=\"M 152.356381 44.209449 \r\nL 154.899691 43.281087 \r\n\" style=\"fill:none;stroke:#d43a58;stroke-width:1.5;\"/>\r\n   </g>\r\n   <g id=\"text_22\">\r\n    <!-- (2,3,1) -->\r\n    <defs>\r\n     <path d=\"M 31 75.875 \r\nQ 24.46875 64.65625 21.28125 53.65625 \r\nQ 18.109375 42.671875 18.109375 31.390625 \r\nQ 18.109375 20.125 21.3125 9.0625 \r\nQ 24.515625 -2 31 -13.1875 \r\nL 23.1875 -13.1875 \r\nQ 15.875 -1.703125 12.234375 9.375 \r\nQ 8.59375 20.453125 8.59375 31.390625 \r\nQ 8.59375 42.28125 12.203125 53.3125 \r\nQ 15.828125 64.359375 23.1875 75.875 \r\nz\r\n\" id=\"DejaVuSans-40\"/>\r\n     <path d=\"M 11.71875 12.40625 \r\nL 22.015625 12.40625 \r\nL 22.015625 4 \r\nL 14.015625 -11.625 \r\nL 7.71875 -11.625 \r\nL 11.71875 4 \r\nz\r\n\" id=\"DejaVuSans-44\"/>\r\n     <path d=\"M 8.015625 75.875 \r\nL 15.828125 75.875 \r\nQ 23.140625 64.359375 26.78125 53.3125 \r\nQ 30.421875 42.28125 30.421875 31.390625 \r\nQ 30.421875 20.453125 26.78125 9.375 \r\nQ 23.140625 -1.703125 15.828125 -13.1875 \r\nL 8.015625 -13.1875 \r\nQ 14.5 -2 17.703125 9.0625 \r\nQ 20.90625 20.125 20.90625 31.390625 \r\nQ 20.90625 42.671875 17.703125 53.65625 \r\nQ 14.5 64.65625 8.015625 75.875 \r\nz\r\n\" id=\"DejaVuSans-41\"/>\r\n    </defs>\r\n    <g transform=\"translate(261.525162 83.905266)rotate(-53.796155)scale(0.1 -0.1)\">\r\n     <use xlink:href=\"#DejaVuSans-40\"/>\r\n     <use x=\"39.013672\" xlink:href=\"#DejaVuSans-50\"/>\r\n     <use x=\"102.636719\" xlink:href=\"#DejaVuSans-44\"/>\r\n     <use x=\"134.423828\" xlink:href=\"#DejaVuSans-51\"/>\r\n     <use x=\"198.046875\" xlink:href=\"#DejaVuSans-44\"/>\r\n     <use x=\"229.833984\" xlink:href=\"#DejaVuSans-49\"/>\r\n     <use x=\"293.457031\" xlink:href=\"#DejaVuSans-41\"/>\r\n    </g>\r\n   </g>\r\n   <g id=\"text_23\">\r\n    <!-- (1,2,-1) -->\r\n    <defs>\r\n     <path d=\"M 4.890625 31.390625 \r\nL 31.203125 31.390625 \r\nL 31.203125 23.390625 \r\nL 4.890625 23.390625 \r\nz\r\n\" id=\"DejaVuSans-45\"/>\r\n    </defs>\r\n    <g transform=\"translate(225.922374 150.963988)rotate(-316.735638)scale(0.1 -0.1)\">\r\n     <use xlink:href=\"#DejaVuSans-40\"/>\r\n     <use x=\"39.013672\" xlink:href=\"#DejaVuSans-49\"/>\r\n     <use x=\"102.636719\" xlink:href=\"#DejaVuSans-44\"/>\r\n     <use x=\"134.423828\" xlink:href=\"#DejaVuSans-50\"/>\r\n     <use x=\"198.046875\" xlink:href=\"#DejaVuSans-44\"/>\r\n     <use x=\"229.833984\" xlink:href=\"#DejaVuSans-45\"/>\r\n     <use x=\"265.917969\" xlink:href=\"#DejaVuSans-49\"/>\r\n     <use x=\"329.541016\" xlink:href=\"#DejaVuSans-41\"/>\r\n    </g>\r\n   </g>\r\n   <g id=\"text_24\">\r\n    <!-- (-8,5,1) -->\r\n    <g transform=\"translate(154.404105 9.637659)rotate(-280.058184)scale(0.1 -0.1)\">\r\n     <use xlink:href=\"#DejaVuSans-40\"/>\r\n     <use x=\"39.013672\" xlink:href=\"#DejaVuSans-45\"/>\r\n     <use x=\"75.097656\" xlink:href=\"#DejaVuSans-56\"/>\r\n     <use x=\"138.720703\" xlink:href=\"#DejaVuSans-44\"/>\r\n     <use x=\"170.507812\" xlink:href=\"#DejaVuSans-53\"/>\r\n     <use x=\"234.130859\" xlink:href=\"#DejaVuSans-44\"/>\r\n     <use x=\"265.917969\" xlink:href=\"#DejaVuSans-49\"/>\r\n     <use x=\"329.541016\" xlink:href=\"#DejaVuSans-41\"/>\r\n    </g>\r\n   </g>\r\n  </g>\r\n </g>\r\n <defs>\r\n  <clipPath id=\"p34571b867d\">\r\n   <rect height=\"217.44\" width=\"334.8\" x=\"7.2\" y=\"7.2\"/>\r\n  </clipPath>\r\n </defs>\r\n</svg>\r\n",
      "text/plain": "<Figure size 432x288 with 1 Axes>"
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib widget\n",
    "\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt3d\n",
    "\n",
    "p, q, r = [[2, 3, 1], [1, 2, -1], [-8, 5, 1]]\n",
    "m = np.array([p,q,r])\n",
    "ax = plt3d.axes(projection='3d')\n",
    "ax.set_xlabel('X')\n",
    "ax.set_ylabel('Y')\n",
    "ax.set_zlabel('Z')\n",
    "rx, ry, rz = vec3d_range(m)\n",
    "ax.set_xlim(rx)\n",
    "ax.set_ylim(ry)\n",
    "ax.set_zlim(rz)\n",
    "ax.quiver(*vec3d_cord(m), arrow_length_ratio=0.1, color=vec3d_color(m))\n",
    "[ax.text(*v, vec3d_label(v), tuple(v)) for v in [p, q, r]]\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "- 3D绘制的帮助函数\n",
    "\n",
    "```python\n",
    "def vec3d_range(m):\n",
    "    a = [(min(0,m[:,i].min()), m[:,i].max()) for i in [0, 1, 2]]\n",
    "    return np.array(a) * 1.2\n",
    "def vec3d_label(v):\n",
    "    return '(' + ','.join(str(i) for i in v) + ')'\n",
    "def vec3d_cord(m):\n",
    "    return zip(*np.concatenate((np.zeros(m.shape), m), axis=1))\n",
    "def vec3d_color(m):\n",
    "    l = np.random.rand(*m.shape)\n",
    "    return [*l, *[i for s in [*zip(l,l)] for i in s]]\n",
    "```"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "- 很多时候文档可以帮助了解接口（目的）\n",
    "- 需要运行代码来深入理解实现（测试即文档）\n",
    "- 经过训练，人脑也可以运行代码（仔细阅读）"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "# 矩阵\n",
    "\n",
    "\n",
    "- 矩阵的记法\n",
    "\n",
    "\\begin{equation}A = \\begin{bmatrix}\n",
    "  1 & 2 & 3 \\\\\n",
    "  4 & 5 & 6\n",
    " \\end{bmatrix}\n",
    "\\end{equation}\n",
    "\n",
    "- 矩阵的下标\n",
    "\n",
    "\\begin{equation}A = \\begin{bmatrix}\n",
    "  a_{1,1} & a_{1,2} & a_{1,3} \\\\\n",
    "  a_{2,1} & a_{2,2} & a_{2,3}\n",
    " \\end{bmatrix}\n",
    "\\end{equation}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": "[[1 2 3]\n [4 5 6]]\n[[1 2 3]\n [4 5 6]]\n"
    }
   ],
   "source": [
    "A = np.array([[1,2,3],\n",
    "              [4,5,6]])\n",
    "print(A)\n",
    "M = np.matrix([[1,2,3],        # 也可以用matrix，它是array的子类\n",
    "               [4,5,6]])\n",
    "print(M)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "### 向量加\n",
    "\n",
    "\\begin{equation}\\begin{bmatrix}1 & 2 & 3 \\\\4 & 5 & 6\\end{bmatrix}+ \\begin{bmatrix}6 & 5 & 4 \\\\3 & 2 & 1\\end{bmatrix} = \\begin{bmatrix}7 & 7 & 7 \\\\7 & 7 & 7\\end{bmatrix}\\end{equation}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": "[[7 7 7]\n [7 7 7]]\n[[7 7 7]\n [7 7 7]]\n"
    }
   ],
   "source": [
    "A = np.array([[1,2,3],\n",
    "              [4,5,6]])\n",
    "B = np.array([[6,5,4],\n",
    "              [3,2,1]])\n",
    "print(A + B)                            # + 操作符\n",
    "print(np.add(A, B))                     # add方法"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "### 向量减\n",
    "\n",
    "\\begin{equation}\\begin{bmatrix}1 & 2 & 3 \\\\4 & 5 & 6\\end{bmatrix}- \\begin{bmatrix}6 & 5 & 4 \\\\3 & 2 & 1\\end{bmatrix} = \\begin{bmatrix}-5 & -3 & -1 \\\\1 & 3 & 5\\end{bmatrix}\\end{equation}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": "[[-5 -3 -1]\n [ 1  3  5]]\n[[-5 -3 -1]\n [ 1  3  5]]\n"
    }
   ],
   "source": [
    "A = np.array([[1,2,3],\n",
    "              [4,5,6]])\n",
    "B = np.array([[6,5,4],\n",
    "              [3,2,1]])\n",
    "print (A - B)                           # - 操作符\n",
    "print(np.subtract(A, B))                # subtract方法"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "### 求负\n",
    "\n",
    "\\begin{equation}C = \\begin{bmatrix}-5 & -3 & -1 \\\\1 & 3 & 5\\end{bmatrix}\\end{equation}\n",
    "\n",
    "\\begin{equation}-C = \\begin{bmatrix}5 & 3 & 1 \\\\-1 & -3 & -5\\end{bmatrix}\\end{equation}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": "[[ 5  3  1]\n [-1 -3 -5]]\n[[ 5  3  1]\n [-1 -3 -5]]\n"
    }
   ],
   "source": [
    "C = np.array([[-5,-3,-1],\n",
    "              [1,3,5]])\n",
    "print(-C)                               # - 这里是一元的操作符，和减法（二元的操作符）是不同的\n",
    "print(np.negative(C))                   # negative方法"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "### 矩阵转置\n",
    "\\begin{equation}\\begin{bmatrix}1 & 2 & 3 \\\\4 & 5 & 6\\end{bmatrix}^{T} = \\begin{bmatrix}1 & 4\\\\2 & 5\\\\3 & 6 \\end{bmatrix}\\end{equation}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": "[[1 4]\n [2 5]\n [3 6]]\n[[1 4]\n [2 5]\n [3 6]]\n"
    }
   ],
   "source": [
    "A = np.array([[1,2,3],\n",
    "              [4,5,6]])\n",
    "print(A.T)                             # T 简写\n",
    "print(np.transpose(A))                 # transpose方法"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "### 矩阵乘\n",
    "\n",
    "简单情况：矩阵乘以标量\n",
    "\n",
    "\\begin{equation}2 \\times \\begin{bmatrix}1 & 2 & 3 \\\\4 & 5 & 6\\end{bmatrix} = \\begin{bmatrix}2 & 4 & 6 \\\\8 & 10 & 12\\end{bmatrix}\\end{equation}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": "array([[ 2,  4,  6],\n       [ 8, 10, 12]])"
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A = np.array([[1,2,3],\n",
    "              [4,5,6]])\n",
    "2 * A"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "### 矩阵相乘\n",
    "\n",
    "\\begin{equation}\\begin{bmatrix}1 & 2 & 3 \\\\4 & 5 & 6\\end{bmatrix} \\cdot \\begin{bmatrix}9 & 8 \\\\ 7 & 6 \\\\ 5 & 4\\end{bmatrix}\\end{equation}\n",
    "\n",
    "\n",
    "\\begin{equation}(1,2,3) \\cdot (9,7,5) = (1 \\times 9) + (2 \\times 7) + (3 \\times 5) = 38\\end{equation}\n",
    "\n",
    "\n",
    "\\begin{equation}\\begin{bmatrix}38 & ?\\\\? & ?\\end{bmatrix} \\end{equation}\n",
    "\n",
    "\n",
    "\\begin{equation}(1,2,3) \\cdot (8,6,4) = (1 \\times 8) + (2 \\times 6) + (3 \\times 4) = 32\\end{equation}\n",
    "\n",
    "\n",
    "\\begin{equation}\\begin{bmatrix}38 & 32\\\\? & ?\\end{bmatrix} \\end{equation}\n",
    "\n",
    "\n",
    "\n",
    "\\begin{equation}(4,5,6) \\cdot (9,7,5) = (4 \\times 9) + (5 \\times 7) + (6 \\times 5) = 101\\end{equation}\n",
    "\n",
    "\n",
    "\n",
    "\\begin{equation}\\begin{bmatrix}38 & 32\\\\101 & ?\\end{bmatrix} \\end{equation}\n",
    "\n",
    "\n",
    "\n",
    "\\begin{equation}(4,5,6) \\cdot (8,6,4) = (4 \\times 8) + (5 \\times 6) + (6 \\times 4) = 86\\end{equation}\n",
    "\n",
    "\n",
    "\\begin{equation}\\begin{bmatrix}38 & 32\\\\101 & 86\\end{bmatrix} \\end{equation}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": "(2, 3) (3, 2)\n[[ 38  32]\n [101  86]]\n[[ 38  32]\n [101  86]]\n"
    }
   ],
   "source": [
    "A = np.array([[1,2,3],\n",
    "              [4,5,6]])\n",
    "B = np.array([[9,8],\n",
    "              [7,6],\n",
    "              [5,4]])\n",
    "print(A.shape, B.shape)\n",
    "print(np.dot(A,B))\n",
    "print(A @ B)                    # @ 代表点乘（内积）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": "[[ 38  32]\n [101  86]]\n[1 2 3] (3,) [9 7 5] (3,)\n[ 9 14 15] 38\n"
    }
   ],
   "source": [
    "A = np.matrix([[1,2,3]\n",
    "               ,[4,5,6]])\n",
    "B = np.matrix([[9,8],\n",
    "               [7,6],\n",
    "               [5,4]])\n",
    "print(A * B)                                    # * 操作符也是可以的，但是注意：不要用在向量上\n",
    "line = np.array(A)[0]\n",
    "column = np.array(B)[:,0]\n",
    "print(line, line.shape, column, column.shape)   # 取出第一行和第一列\n",
    "print(line * column, line @ column)             # 对于向量，* 和 @ 完全不同"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "矩阵相乘没有交换律\n",
    "\\begin{equation}2 \\times 4 = 4 \\times 2\\end{equation}\n",
    "\n",
    "\\begin{equation}\\begin{bmatrix}2 & 4 \\\\6 & 8\\end{bmatrix} \\cdot \\begin{bmatrix}1 & 3 \\\\ 5 & 7\\end{bmatrix} \\ne \\begin{bmatrix}1 & 3 \\\\ 5 & 7\\end{bmatrix} \\cdot \\begin{bmatrix}2 & 4 \\\\6 & 8\\end{bmatrix}\\end{equation}\n",
    "\n",
    "可以想像一个3x2的矩阵乘以一个2x3的矩阵"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": "[[22 34]\n [46 74]]\n[[20 28]\n [52 76]]\n"
    }
   ],
   "source": [
    "A = np.array([[2,4],\n",
    "              [6,8]])\n",
    "B = np.array([[1,3],\n",
    "              [5,7]])\n",
    "print(A @ B)\n",
    "print(B @ A)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "## 单位矩阵\n",
    "\n",
    "\\begin{equation}\\begin{bmatrix}1 & 0 & 0\\\\0 & 1 & 0\\\\0 & 0 & 1\\end{bmatrix} \\end{equation}\n",
    "\n",
    "\n",
    "乘以单位矩阵还是矩阵本身\n",
    "\n",
    "\n",
    "\\begin{equation}\\begin{bmatrix}1 & 2 & 3 \\\\4 & 5 & 6\\\\7 & 8 & 9\\end{bmatrix} \\cdot \\begin{bmatrix}1 & 0 & 0\\\\0 & 1 & 0\\\\0 & 0 & 1\\end{bmatrix} = \\begin{bmatrix}1 & 2 & 3 \\\\4 & 5 & 6\\\\7 & 8 & 9\\end{bmatrix} \\end{equation}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": "[[1 2 3]\n [4 5 6]\n [7 8 9]]\n"
    }
   ],
   "source": [
    "A = np.array([[1,2,3],\n",
    "              [4,5,6],\n",
    "              [7,8,9]])\n",
    "B = np.array([[1,0,0],\n",
    "              [0,1,0],\n",
    "              [0,0,1]])\n",
    "print(A @ B)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true,
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "## 逆矩阵\n",
    "\n",
    "\\begin{equation}A \\div B = A \\cdot B^{-1}\\end{equation}\n",
    "\n",
    "\n",
    "\\begin{equation}B \\cdot B^{-1} = B^{-1} \\cdot B = I\\end{equation}\n",
    "\n",
    "**I** 是单位矩阵"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": "[[ 0.2 -0.2]\n [-0.1  0.6]]\n[[ 0.2 -0.2]\n [-0.1  0.6]]\n"
    }
   ],
   "source": [
    "B = np.array([[6,2],\n",
    "              [1,2]])\n",
    "\n",
    "print(np.linalg.inv(B))    # 矩阵求逆\n",
    "print(np.matrix(B).I)      # 简写，参考转置"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "## 解方程组\n",
    "\n",
    "\\begin{equation}2x + 4y = 18\\end{equation}\n",
    "\\begin{equation}6x + 2y = 34\\end{equation}\n",
    "\n",
    "\\begin{equation}\\begin{bmatrix}2 & 4\\\\6 & 2\\end{bmatrix} \\cdot \\begin{bmatrix}x\\\\y\\end{bmatrix}=\\begin{bmatrix}18\\\\34\\end{bmatrix}\\end{equation}\n",
    "\n",
    "\n",
    "\\begin{equation}A=\\begin{bmatrix}2 & 4\\\\6 & 2\\end{bmatrix}\\;\\;\\;\\;X=\\begin{bmatrix}x\\\\y\\end{bmatrix}\\;\\;\\;\\;B=\\begin{bmatrix}18\\\\34\\end{bmatrix}\\end{equation}\n",
    "\n",
    "\n",
    "\\begin{equation}\\begin{bmatrix}2 & 4\\\\6 & 2\\end{bmatrix}^{-1} = \\begin{bmatrix}-0.1 & 0.2\\\\0.3 & -0.1\\end{bmatrix}\\end{equation}\n",
    "\n",
    "\n",
    "\\begin{equation}X = \\begin{bmatrix}-0.1 & 0.2\\\\0.3 & -0.1\\end{bmatrix} \\cdot \\begin{bmatrix}18\\\\34\\end{bmatrix}\\end{equation}\n",
    "\n",
    "\n",
    "\\begin{equation}X = \\begin{bmatrix}5\\\\2\\end{bmatrix}\\end{equation}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": "[[5.]\n [2.]]\n[[5.]\n [2.]]\n"
    }
   ],
   "source": [
    "A = np.array([[2,4],\n",
    "              [6,2]])\n",
    "\n",
    "B = np.array([[18],\n",
    "              [34]])\n",
    "\n",
    "C = np.linalg.inv(A) @ B\n",
    "\n",
    "print(C)\n",
    "print(np.linalg.solve(A, B))             # 调用方法solve，在Numpy介绍中提到过"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true,
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "# 变换，特征向量和特征值\n",
    "\n",
    "\n",
    "\n",
    "## 线性变换\n",
    "\n",
    "\n",
    "对矩阵 ***A*** 和向量 ***v***:\n",
    "\n",
    "$$ A = \\begin{bmatrix}2 & 3\\\\5 & 2\\end{bmatrix} \\;\\;\\;\\; \\vec{v} = \\begin{bmatrix}1\\\\2\\end{bmatrix}$$\n",
    "\n",
    "定义 ***T*** 为:\n",
    "\n",
    "$$ T(\\vec{v}) = A\\vec{v} $$\n",
    "\n",
    "向量和矩阵的点乘是和右侧矩阵的每一列做向量点乘，最后得到一个变换后的向量\n",
    "\n",
    "$$\\begin{bmatrix}2 & 3\\\\5 & 2\\end{bmatrix} \\cdot  \\begin{bmatrix}1\\\\2\\end{bmatrix} = \\begin{bmatrix}8\\\\9\\end{bmatrix}$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": "[8 9]\n"
    }
   ],
   "source": [
    "v = np.array([1,2])\n",
    "A = np.array([[2,3],\n",
    "              [5,2]])\n",
    "\n",
    "t = A@v\n",
    "print (t)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "可见变换T是一个从二维实数向量向另一个二维实数向量的变换: ${\\rm I\\!R^{2} \\to \\rm I\\!R^{2} }$\n",
    "\n",
    "\n",
    "输出向量的维度可以和原向量不同，因此准确地说：${\\rm I\\!R^{n} \\to \\rm I\\!R^{m}}$\n",
    "\n",
    "比如\n",
    "\n",
    "$$ A = \\begin{bmatrix}2 & 3\\\\5 & 2\\\\1 & 1\\end{bmatrix} \\;\\;\\;\\; \\vec{v} = \\begin{bmatrix}1\\\\2\\end{bmatrix}$$\n",
    "\n",
    "$$ T(\\vec{v}) = A\\vec{v} $$\n",
    "\n",
    "$$\\begin{bmatrix}2 & 3\\\\5 & 2\\\\1 & 1\\end{bmatrix} \\cdot  \\begin{bmatrix}1\\\\2\\end{bmatrix} = \\begin{bmatrix}8\\\\9\\\\3\\end{bmatrix}$$\n",
    "\n",
    "所以${ T: \\rm I\\!R^{2} \\to \\rm I\\!R^{3} }$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": "[8 9 3]\n"
    }
   ],
   "source": [
    "v = np.array([1,2])\n",
    "A = np.array([[2,3],\n",
    "              [5,2],\n",
    "              [1,1]])\n",
    "\n",
    "t = A@v                   # (2) → (3)\n",
    "print (t)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": "[5 4]\n"
    }
   ],
   "source": [
    "v = np.array([1,2])\n",
    "A = np.array([[1,2],\n",
    "              [2,1]])\n",
    "\n",
    "t = A@v                   # (2) → (2)\n",
    "print (t)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "## 向量的缩放和旋转变换\n",
    "\n",
    "\n",
    "$$ A = \\begin{bmatrix}2 & 0\\\\0 & 2\\end{bmatrix} \\;\\;\\;\\; \\vec{v} = \\begin{bmatrix}1\\\\0\\end{bmatrix}$$\n",
    "\n",
    "缩放变换的例子：\n",
    "\n",
    "\\begin{equation}\\begin{bmatrix}2 & 0\\\\0 & 2\\end{bmatrix} \\cdot  \\begin{bmatrix}1\\\\0\\end{bmatrix} = \\begin{bmatrix}2\\\\0\\end{bmatrix}\\end{equation}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "旋转90°的变换\n",
    "\\begin{equation}\\begin{bmatrix}0 & -1\\\\1 & 0\\end{bmatrix} \\cdot  \\begin{bmatrix}1\\\\0\\end{bmatrix} = \\begin{bmatrix}0\\\\1\\end{bmatrix}\\end{equation}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\r\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\r\n  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n<!-- Created with matplotlib (https://matplotlib.org/) -->\r\n<svg height=\"271.794688pt\" version=\"1.1\" viewBox=\"0 0 370.942187 271.794688\" width=\"370.942187pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n <defs>\r\n  <style type=\"text/css\">\r\n*{stroke-linecap:butt;stroke-linejoin:round;}\r\n  </style>\r\n </defs>\r\n <g id=\"figure_1\">\r\n  <g id=\"patch_1\">\r\n   <path d=\"M 0 271.794688 \r\nL 370.942187 271.794688 \r\nL 370.942187 0 \r\nL 0 0 \r\nz\r\n\" style=\"fill:none;\"/>\r\n  </g>\r\n  <g id=\"axes_1\">\r\n   <g id=\"patch_2\">\r\n    <path d=\"M 28.942188 235.238438 \r\nL 363.742188 235.238438 \r\nL 363.742188 17.798438 \r\nL 28.942188 17.798438 \r\nz\r\n\" style=\"fill:#ffffff;\"/>\r\n   </g>\r\n   <g id=\"Quiver_1\">\r\n    <path clip-path=\"url(#pe3ccd8fb82)\" d=\"M 196.342188 125.262938 \r\nL 218.522688 125.262938 \r\nL 217.267188 122.751938 \r\nL 229.822188 126.518438 \r\nL 217.267188 130.284938 \r\nL 218.522688 127.773938 \r\nL 196.342188 127.773938 \r\nL 196.342188 125.262938 \r\n\" style=\"fill:#ffa500;\"/>\r\n    <path clip-path=\"url(#pe3ccd8fb82)\" d=\"M 195.086688 126.518438 \r\nL 195.086688 104.337938 \r\nL 192.575688 105.593437 \r\nL 196.342188 93.038438 \r\nL 200.108688 105.593437 \r\nL 197.597688 104.337938 \r\nL 197.597688 126.518438 \r\nL 195.086688 126.518438 \r\n\" style=\"fill:#0000ff;\"/>\r\n   </g>\r\n   <g id=\"matplotlib.axis_1\">\r\n    <g id=\"xtick_1\">\r\n     <g id=\"line2d_1\">\r\n      <path clip-path=\"url(#pe3ccd8fb82)\" d=\"M 74.596733 235.238438 \r\nL 74.596733 17.798438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_2\">\r\n      <defs>\r\n       <path d=\"M 0 0 \r\nL 0 3.5 \r\n\" id=\"mdded0044d2\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n      </defs>\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"74.596733\" xlink:href=\"#mdded0044d2\" y=\"235.238438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_1\">\r\n      <!-- −4 -->\r\n      <defs>\r\n       <path d=\"M 10.59375 35.5 \r\nL 73.1875 35.5 \r\nL 73.1875 27.203125 \r\nL 10.59375 27.203125 \r\nz\r\n\" id=\"DejaVuSans-8722\"/>\r\n       <path d=\"M 37.796875 64.3125 \r\nL 12.890625 25.390625 \r\nL 37.796875 25.390625 \r\nz\r\nM 35.203125 72.90625 \r\nL 47.609375 72.90625 \r\nL 47.609375 25.390625 \r\nL 58.015625 25.390625 \r\nL 58.015625 17.1875 \r\nL 47.609375 17.1875 \r\nL 47.609375 0 \r\nL 37.796875 0 \r\nL 37.796875 17.1875 \r\nL 4.890625 17.1875 \r\nL 4.890625 26.703125 \r\nz\r\n\" id=\"DejaVuSans-52\"/>\r\n      </defs>\r\n      <g transform=\"translate(67.225639 249.836875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-52\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_2\">\r\n     <g id=\"line2d_3\">\r\n      <path clip-path=\"url(#pe3ccd8fb82)\" d=\"M 135.46946 235.238438 \r\nL 135.46946 17.798438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_4\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"135.46946\" xlink:href=\"#mdded0044d2\" y=\"235.238438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_2\">\r\n      <!-- −2 -->\r\n      <defs>\r\n       <path d=\"M 19.1875 8.296875 \r\nL 53.609375 8.296875 \r\nL 53.609375 0 \r\nL 7.328125 0 \r\nL 7.328125 8.296875 \r\nQ 12.9375 14.109375 22.625 23.890625 \r\nQ 32.328125 33.6875 34.8125 36.53125 \r\nQ 39.546875 41.84375 41.421875 45.53125 \r\nQ 43.3125 49.21875 43.3125 52.78125 \r\nQ 43.3125 58.59375 39.234375 62.25 \r\nQ 35.15625 65.921875 28.609375 65.921875 \r\nQ 23.96875 65.921875 18.8125 64.3125 \r\nQ 13.671875 62.703125 7.8125 59.421875 \r\nL 7.8125 69.390625 \r\nQ 13.765625 71.78125 18.9375 73 \r\nQ 24.125 74.21875 28.421875 74.21875 \r\nQ 39.75 74.21875 46.484375 68.546875 \r\nQ 53.21875 62.890625 53.21875 53.421875 \r\nQ 53.21875 48.921875 51.53125 44.890625 \r\nQ 49.859375 40.875 45.40625 35.40625 \r\nQ 44.1875 33.984375 37.640625 27.21875 \r\nQ 31.109375 20.453125 19.1875 8.296875 \r\nz\r\n\" id=\"DejaVuSans-50\"/>\r\n      </defs>\r\n      <g transform=\"translate(128.098366 249.836875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-50\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_3\">\r\n     <g id=\"line2d_5\">\r\n      <path clip-path=\"url(#pe3ccd8fb82)\" d=\"M 196.342188 235.238438 \r\nL 196.342188 17.798438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_6\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"196.342188\" xlink:href=\"#mdded0044d2\" y=\"235.238438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_3\">\r\n      <!-- 0 -->\r\n      <defs>\r\n       <path d=\"M 31.78125 66.40625 \r\nQ 24.171875 66.40625 20.328125 58.90625 \r\nQ 16.5 51.421875 16.5 36.375 \r\nQ 16.5 21.390625 20.328125 13.890625 \r\nQ 24.171875 6.390625 31.78125 6.390625 \r\nQ 39.453125 6.390625 43.28125 13.890625 \r\nQ 47.125 21.390625 47.125 36.375 \r\nQ 47.125 51.421875 43.28125 58.90625 \r\nQ 39.453125 66.40625 31.78125 66.40625 \r\nz\r\nM 31.78125 74.21875 \r\nQ 44.046875 74.21875 50.515625 64.515625 \r\nQ 56.984375 54.828125 56.984375 36.375 \r\nQ 56.984375 17.96875 50.515625 8.265625 \r\nQ 44.046875 -1.421875 31.78125 -1.421875 \r\nQ 19.53125 -1.421875 13.0625 8.265625 \r\nQ 6.59375 17.96875 6.59375 36.375 \r\nQ 6.59375 54.828125 13.0625 64.515625 \r\nQ 19.53125 74.21875 31.78125 74.21875 \r\nz\r\n\" id=\"DejaVuSans-48\"/>\r\n      </defs>\r\n      <g transform=\"translate(193.160938 249.836875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_4\">\r\n     <g id=\"line2d_7\">\r\n      <path clip-path=\"url(#pe3ccd8fb82)\" d=\"M 257.214915 235.238438 \r\nL 257.214915 17.798438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_8\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"257.214915\" xlink:href=\"#mdded0044d2\" y=\"235.238438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_4\">\r\n      <!-- 2 -->\r\n      <g transform=\"translate(254.033665 249.836875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-50\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_5\">\r\n     <g id=\"line2d_9\">\r\n      <path clip-path=\"url(#pe3ccd8fb82)\" d=\"M 318.087642 235.238438 \r\nL 318.087642 17.798438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_10\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"318.087642\" xlink:href=\"#mdded0044d2\" y=\"235.238438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_5\">\r\n      <!-- 4 -->\r\n      <g transform=\"translate(314.906392 249.836875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-52\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"text_6\">\r\n     <!-- 1e−2 -->\r\n     <defs>\r\n      <path d=\"M 12.40625 8.296875 \r\nL 28.515625 8.296875 \r\nL 28.515625 63.921875 \r\nL 10.984375 60.40625 \r\nL 10.984375 69.390625 \r\nL 28.421875 72.90625 \r\nL 38.28125 72.90625 \r\nL 38.28125 8.296875 \r\nL 54.390625 8.296875 \r\nL 54.390625 0 \r\nL 12.40625 0 \r\nz\r\n\" id=\"DejaVuSans-49\"/>\r\n      <path d=\"M 56.203125 29.59375 \r\nL 56.203125 25.203125 \r\nL 14.890625 25.203125 \r\nQ 15.484375 15.921875 20.484375 11.0625 \r\nQ 25.484375 6.203125 34.421875 6.203125 \r\nQ 39.59375 6.203125 44.453125 7.46875 \r\nQ 49.3125 8.734375 54.109375 11.28125 \r\nL 54.109375 2.78125 \r\nQ 49.265625 0.734375 44.1875 -0.34375 \r\nQ 39.109375 -1.421875 33.890625 -1.421875 \r\nQ 20.796875 -1.421875 13.15625 6.1875 \r\nQ 5.515625 13.8125 5.515625 26.8125 \r\nQ 5.515625 40.234375 12.765625 48.109375 \r\nQ 20.015625 56 32.328125 56 \r\nQ 43.359375 56 49.78125 48.890625 \r\nQ 56.203125 41.796875 56.203125 29.59375 \r\nz\r\nM 47.21875 32.234375 \r\nQ 47.125 39.59375 43.09375 43.984375 \r\nQ 39.0625 48.390625 32.421875 48.390625 \r\nQ 24.90625 48.390625 20.390625 44.140625 \r\nQ 15.875 39.890625 15.1875 32.171875 \r\nz\r\n\" id=\"DejaVuSans-101\"/>\r\n     </defs>\r\n     <g transform=\"translate(336.484375 262.515)scale(0.1 -0.1)\">\r\n      <use xlink:href=\"#DejaVuSans-49\"/>\r\n      <use x=\"63.623047\" xlink:href=\"#DejaVuSans-101\"/>\r\n      <use x=\"125.146484\" xlink:href=\"#DejaVuSans-8722\"/>\r\n      <use x=\"208.935547\" xlink:href=\"#DejaVuSans-50\"/>\r\n     </g>\r\n    </g>\r\n   </g>\r\n   <g id=\"matplotlib.axis_2\">\r\n    <g id=\"ytick_1\">\r\n     <g id=\"line2d_11\">\r\n      <path clip-path=\"url(#pe3ccd8fb82)\" d=\"M 28.942188 217.827528 \r\nL 363.742188 217.827528 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_12\">\r\n      <defs>\r\n       <path d=\"M 0 0 \r\nL -3.5 0 \r\n\" id=\"mc03c5230a3\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n      </defs>\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#mc03c5230a3\" y=\"217.827528\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_7\">\r\n      <!-- −3 -->\r\n      <defs>\r\n       <path d=\"M 40.578125 39.3125 \r\nQ 47.65625 37.796875 51.625 33 \r\nQ 55.609375 28.21875 55.609375 21.1875 \r\nQ 55.609375 10.40625 48.1875 4.484375 \r\nQ 40.765625 -1.421875 27.09375 -1.421875 \r\nQ 22.515625 -1.421875 17.65625 -0.515625 \r\nQ 12.796875 0.390625 7.625 2.203125 \r\nL 7.625 11.71875 \r\nQ 11.71875 9.328125 16.59375 8.109375 \r\nQ 21.484375 6.890625 26.8125 6.890625 \r\nQ 36.078125 6.890625 40.9375 10.546875 \r\nQ 45.796875 14.203125 45.796875 21.1875 \r\nQ 45.796875 27.640625 41.28125 31.265625 \r\nQ 36.765625 34.90625 28.71875 34.90625 \r\nL 20.21875 34.90625 \r\nL 20.21875 43.015625 \r\nL 29.109375 43.015625 \r\nQ 36.375 43.015625 40.234375 45.921875 \r\nQ 44.09375 48.828125 44.09375 54.296875 \r\nQ 44.09375 59.90625 40.109375 62.90625 \r\nQ 36.140625 65.921875 28.71875 65.921875 \r\nQ 24.65625 65.921875 20.015625 65.03125 \r\nQ 15.375 64.15625 9.8125 62.3125 \r\nL 9.8125 71.09375 \r\nQ 15.4375 72.65625 20.34375 73.4375 \r\nQ 25.25 74.21875 29.59375 74.21875 \r\nQ 40.828125 74.21875 47.359375 69.109375 \r\nQ 53.90625 64.015625 53.90625 55.328125 \r\nQ 53.90625 49.265625 50.4375 45.09375 \r\nQ 46.96875 40.921875 40.578125 39.3125 \r\nz\r\n\" id=\"DejaVuSans-51\"/>\r\n      </defs>\r\n      <g transform=\"translate(7.2 221.626747)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-51\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_2\">\r\n     <g id=\"line2d_13\">\r\n      <path clip-path=\"url(#pe3ccd8fb82)\" d=\"M 28.942188 187.391165 \r\nL 363.742188 187.391165 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_14\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#mc03c5230a3\" y=\"187.391165\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_8\">\r\n      <!-- −2 -->\r\n      <g transform=\"translate(7.2 191.190384)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-50\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_3\">\r\n     <g id=\"line2d_15\">\r\n      <path clip-path=\"url(#pe3ccd8fb82)\" d=\"M 28.942188 156.954801 \r\nL 363.742188 156.954801 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_16\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#mc03c5230a3\" y=\"156.954801\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_9\">\r\n      <!-- −1 -->\r\n      <g transform=\"translate(7.2 160.75402)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-49\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_4\">\r\n     <g id=\"line2d_17\">\r\n      <path clip-path=\"url(#pe3ccd8fb82)\" d=\"M 28.942188 126.518438 \r\nL 363.742188 126.518438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_18\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#mc03c5230a3\" y=\"126.518438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_10\">\r\n      <!-- 0 -->\r\n      <g transform=\"translate(15.579688 130.317656)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_5\">\r\n     <g id=\"line2d_19\">\r\n      <path clip-path=\"url(#pe3ccd8fb82)\" d=\"M 28.942188 96.082074 \r\nL 363.742188 96.082074 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_20\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#mc03c5230a3\" y=\"96.082074\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_11\">\r\n      <!-- 1 -->\r\n      <g transform=\"translate(15.579688 99.881293)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-49\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_6\">\r\n     <g id=\"line2d_21\">\r\n      <path clip-path=\"url(#pe3ccd8fb82)\" d=\"M 28.942188 65.64571 \r\nL 363.742188 65.64571 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_22\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#mc03c5230a3\" y=\"65.64571\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_12\">\r\n      <!-- 2 -->\r\n      <g transform=\"translate(15.579688 69.444929)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-50\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_7\">\r\n     <g id=\"line2d_23\">\r\n      <path clip-path=\"url(#pe3ccd8fb82)\" d=\"M 28.942188 35.209347 \r\nL 363.742188 35.209347 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_24\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#mc03c5230a3\" y=\"35.209347\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_13\">\r\n      <!-- 3 -->\r\n      <g transform=\"translate(15.579688 39.008565)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-51\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"text_14\">\r\n     <!-- 1e−2 -->\r\n     <g transform=\"translate(28.942188 14.798437)scale(0.1 -0.1)\">\r\n      <use xlink:href=\"#DejaVuSans-49\"/>\r\n      <use x=\"63.623047\" xlink:href=\"#DejaVuSans-101\"/>\r\n      <use x=\"125.146484\" xlink:href=\"#DejaVuSans-8722\"/>\r\n      <use x=\"208.935547\" xlink:href=\"#DejaVuSans-50\"/>\r\n     </g>\r\n    </g>\r\n   </g>\r\n   <g id=\"patch_3\">\r\n    <path d=\"M 28.942188 235.238438 \r\nL 28.942188 17.798437 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_4\">\r\n    <path d=\"M 363.742188 235.238438 \r\nL 363.742188 17.798437 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_5\">\r\n    <path d=\"M 28.942188 235.238438 \r\nL 363.742188 235.238438 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_6\">\r\n    <path d=\"M 28.942188 17.798438 \r\nL 363.742188 17.798438 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n  </g>\r\n </g>\r\n <defs>\r\n  <clipPath id=\"pe3ccd8fb82\">\r\n   <rect height=\"217.44\" width=\"334.8\" x=\"28.942188\" y=\"17.798438\"/>\r\n  </clipPath>\r\n </defs>\r\n</svg>\r\n",
      "text/plain": "<Figure size 432x288 with 1 Axes>"
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "\n",
    "v = np.array([1,0])\n",
    "A = np.array([[0,-1],\n",
    "              [1,0]])\n",
    "\n",
    "t = A@v\n",
    "\n",
    "vecs = np.array([v,t])\n",
    "origin = [0], [0]\n",
    "plt.axis('equal')\n",
    "plt.grid()\n",
    "plt.ticklabel_format(style='sci', axis='both', scilimits=(0,0))\n",
    "plt.quiver(*origin, vecs[:,0], vecs[:,1], color=['orange', 'blue'], scale=10)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "变换\n",
    "\\begin{equation}\\begin{bmatrix}2 & 1\\\\1 & 2\\end{bmatrix} \\cdot  \\begin{bmatrix}1\\\\0\\end{bmatrix} = \\begin{bmatrix}2\\\\1\\end{bmatrix}\\end{equation}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\r\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\r\n  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n<!-- Created with matplotlib (https://matplotlib.org/) -->\r\n<svg height=\"271.794688pt\" version=\"1.1\" viewBox=\"0 0 370.942187 271.794688\" width=\"370.942187pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n <defs>\r\n  <style type=\"text/css\">\r\n*{stroke-linecap:butt;stroke-linejoin:round;}\r\n  </style>\r\n </defs>\r\n <g id=\"figure_1\">\r\n  <g id=\"patch_1\">\r\n   <path d=\"M 0 271.794688 \r\nL 370.942187 271.794688 \r\nL 370.942187 0 \r\nL 0 0 \r\nz\r\n\" style=\"fill:none;\"/>\r\n  </g>\r\n  <g id=\"axes_1\">\r\n   <g id=\"patch_2\">\r\n    <path d=\"M 28.942188 235.238438 \r\nL 363.742188 235.238438 \r\nL 363.742188 17.798438 \r\nL 28.942188 17.798438 \r\nz\r\n\" style=\"fill:#ffffff;\"/>\r\n   </g>\r\n   <g id=\"Quiver_1\">\r\n    <path clip-path=\"url(#p096bd5b031)\" d=\"M 196.342188 125.262938 \r\nL 218.522688 125.262938 \r\nL 217.267188 122.751938 \r\nL 229.822188 126.518438 \r\nL 217.267188 130.284938 \r\nL 218.522688 127.773938 \r\nL 196.342188 127.773938 \r\nL 196.342188 125.262938 \r\n\" style=\"fill:#ffa500;\"/>\r\n    <path clip-path=\"url(#p096bd5b031)\" d=\"M 195.780711 125.395484 \r\nL 252.634131 96.968774 \r\nL 250.388224 95.284344 \r\nL 263.302188 93.038438 \r\nL 253.757084 102.022064 \r\nL 253.757084 99.214681 \r\nL 196.903664 127.641391 \r\nL 195.780711 125.395484 \r\n\" style=\"fill:#0000ff;\"/>\r\n   </g>\r\n   <g id=\"matplotlib.axis_1\">\r\n    <g id=\"xtick_1\">\r\n     <g id=\"line2d_1\">\r\n      <path clip-path=\"url(#p096bd5b031)\" d=\"M 74.596733 235.238438 \r\nL 74.596733 17.798438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_2\">\r\n      <defs>\r\n       <path d=\"M 0 0 \r\nL 0 3.5 \r\n\" id=\"m4dd09ab74f\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n      </defs>\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"74.596733\" xlink:href=\"#m4dd09ab74f\" y=\"235.238438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_1\">\r\n      <!-- −4 -->\r\n      <defs>\r\n       <path d=\"M 10.59375 35.5 \r\nL 73.1875 35.5 \r\nL 73.1875 27.203125 \r\nL 10.59375 27.203125 \r\nz\r\n\" id=\"DejaVuSans-8722\"/>\r\n       <path d=\"M 37.796875 64.3125 \r\nL 12.890625 25.390625 \r\nL 37.796875 25.390625 \r\nz\r\nM 35.203125 72.90625 \r\nL 47.609375 72.90625 \r\nL 47.609375 25.390625 \r\nL 58.015625 25.390625 \r\nL 58.015625 17.1875 \r\nL 47.609375 17.1875 \r\nL 47.609375 0 \r\nL 37.796875 0 \r\nL 37.796875 17.1875 \r\nL 4.890625 17.1875 \r\nL 4.890625 26.703125 \r\nz\r\n\" id=\"DejaVuSans-52\"/>\r\n      </defs>\r\n      <g transform=\"translate(67.225639 249.836875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-52\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_2\">\r\n     <g id=\"line2d_3\">\r\n      <path clip-path=\"url(#p096bd5b031)\" d=\"M 135.46946 235.238438 \r\nL 135.46946 17.798438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_4\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"135.46946\" xlink:href=\"#m4dd09ab74f\" y=\"235.238438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_2\">\r\n      <!-- −2 -->\r\n      <defs>\r\n       <path d=\"M 19.1875 8.296875 \r\nL 53.609375 8.296875 \r\nL 53.609375 0 \r\nL 7.328125 0 \r\nL 7.328125 8.296875 \r\nQ 12.9375 14.109375 22.625 23.890625 \r\nQ 32.328125 33.6875 34.8125 36.53125 \r\nQ 39.546875 41.84375 41.421875 45.53125 \r\nQ 43.3125 49.21875 43.3125 52.78125 \r\nQ 43.3125 58.59375 39.234375 62.25 \r\nQ 35.15625 65.921875 28.609375 65.921875 \r\nQ 23.96875 65.921875 18.8125 64.3125 \r\nQ 13.671875 62.703125 7.8125 59.421875 \r\nL 7.8125 69.390625 \r\nQ 13.765625 71.78125 18.9375 73 \r\nQ 24.125 74.21875 28.421875 74.21875 \r\nQ 39.75 74.21875 46.484375 68.546875 \r\nQ 53.21875 62.890625 53.21875 53.421875 \r\nQ 53.21875 48.921875 51.53125 44.890625 \r\nQ 49.859375 40.875 45.40625 35.40625 \r\nQ 44.1875 33.984375 37.640625 27.21875 \r\nQ 31.109375 20.453125 19.1875 8.296875 \r\nz\r\n\" id=\"DejaVuSans-50\"/>\r\n      </defs>\r\n      <g transform=\"translate(128.098366 249.836875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-50\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_3\">\r\n     <g id=\"line2d_5\">\r\n      <path clip-path=\"url(#p096bd5b031)\" d=\"M 196.342188 235.238438 \r\nL 196.342188 17.798438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_6\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"196.342188\" xlink:href=\"#m4dd09ab74f\" y=\"235.238438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_3\">\r\n      <!-- 0 -->\r\n      <defs>\r\n       <path d=\"M 31.78125 66.40625 \r\nQ 24.171875 66.40625 20.328125 58.90625 \r\nQ 16.5 51.421875 16.5 36.375 \r\nQ 16.5 21.390625 20.328125 13.890625 \r\nQ 24.171875 6.390625 31.78125 6.390625 \r\nQ 39.453125 6.390625 43.28125 13.890625 \r\nQ 47.125 21.390625 47.125 36.375 \r\nQ 47.125 51.421875 43.28125 58.90625 \r\nQ 39.453125 66.40625 31.78125 66.40625 \r\nz\r\nM 31.78125 74.21875 \r\nQ 44.046875 74.21875 50.515625 64.515625 \r\nQ 56.984375 54.828125 56.984375 36.375 \r\nQ 56.984375 17.96875 50.515625 8.265625 \r\nQ 44.046875 -1.421875 31.78125 -1.421875 \r\nQ 19.53125 -1.421875 13.0625 8.265625 \r\nQ 6.59375 17.96875 6.59375 36.375 \r\nQ 6.59375 54.828125 13.0625 64.515625 \r\nQ 19.53125 74.21875 31.78125 74.21875 \r\nz\r\n\" id=\"DejaVuSans-48\"/>\r\n      </defs>\r\n      <g transform=\"translate(193.160938 249.836875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_4\">\r\n     <g id=\"line2d_7\">\r\n      <path clip-path=\"url(#p096bd5b031)\" d=\"M 257.214915 235.238438 \r\nL 257.214915 17.798438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_8\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"257.214915\" xlink:href=\"#m4dd09ab74f\" y=\"235.238438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_4\">\r\n      <!-- 2 -->\r\n      <g transform=\"translate(254.033665 249.836875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-50\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_5\">\r\n     <g id=\"line2d_9\">\r\n      <path clip-path=\"url(#p096bd5b031)\" d=\"M 318.087642 235.238438 \r\nL 318.087642 17.798438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_10\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"318.087642\" xlink:href=\"#m4dd09ab74f\" y=\"235.238438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_5\">\r\n      <!-- 4 -->\r\n      <g transform=\"translate(314.906392 249.836875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-52\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"text_6\">\r\n     <!-- 1e−2 -->\r\n     <defs>\r\n      <path d=\"M 12.40625 8.296875 \r\nL 28.515625 8.296875 \r\nL 28.515625 63.921875 \r\nL 10.984375 60.40625 \r\nL 10.984375 69.390625 \r\nL 28.421875 72.90625 \r\nL 38.28125 72.90625 \r\nL 38.28125 8.296875 \r\nL 54.390625 8.296875 \r\nL 54.390625 0 \r\nL 12.40625 0 \r\nz\r\n\" id=\"DejaVuSans-49\"/>\r\n      <path d=\"M 56.203125 29.59375 \r\nL 56.203125 25.203125 \r\nL 14.890625 25.203125 \r\nQ 15.484375 15.921875 20.484375 11.0625 \r\nQ 25.484375 6.203125 34.421875 6.203125 \r\nQ 39.59375 6.203125 44.453125 7.46875 \r\nQ 49.3125 8.734375 54.109375 11.28125 \r\nL 54.109375 2.78125 \r\nQ 49.265625 0.734375 44.1875 -0.34375 \r\nQ 39.109375 -1.421875 33.890625 -1.421875 \r\nQ 20.796875 -1.421875 13.15625 6.1875 \r\nQ 5.515625 13.8125 5.515625 26.8125 \r\nQ 5.515625 40.234375 12.765625 48.109375 \r\nQ 20.015625 56 32.328125 56 \r\nQ 43.359375 56 49.78125 48.890625 \r\nQ 56.203125 41.796875 56.203125 29.59375 \r\nz\r\nM 47.21875 32.234375 \r\nQ 47.125 39.59375 43.09375 43.984375 \r\nQ 39.0625 48.390625 32.421875 48.390625 \r\nQ 24.90625 48.390625 20.390625 44.140625 \r\nQ 15.875 39.890625 15.1875 32.171875 \r\nz\r\n\" id=\"DejaVuSans-101\"/>\r\n     </defs>\r\n     <g transform=\"translate(336.484375 262.515)scale(0.1 -0.1)\">\r\n      <use xlink:href=\"#DejaVuSans-49\"/>\r\n      <use x=\"63.623047\" xlink:href=\"#DejaVuSans-101\"/>\r\n      <use x=\"125.146484\" xlink:href=\"#DejaVuSans-8722\"/>\r\n      <use x=\"208.935547\" xlink:href=\"#DejaVuSans-50\"/>\r\n     </g>\r\n    </g>\r\n   </g>\r\n   <g id=\"matplotlib.axis_2\">\r\n    <g id=\"ytick_1\">\r\n     <g id=\"line2d_11\">\r\n      <path clip-path=\"url(#p096bd5b031)\" d=\"M 28.942188 217.827528 \r\nL 363.742188 217.827528 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_12\">\r\n      <defs>\r\n       <path d=\"M 0 0 \r\nL -3.5 0 \r\n\" id=\"m6bed5b7551\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n      </defs>\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m6bed5b7551\" y=\"217.827528\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_7\">\r\n      <!-- −3 -->\r\n      <defs>\r\n       <path d=\"M 40.578125 39.3125 \r\nQ 47.65625 37.796875 51.625 33 \r\nQ 55.609375 28.21875 55.609375 21.1875 \r\nQ 55.609375 10.40625 48.1875 4.484375 \r\nQ 40.765625 -1.421875 27.09375 -1.421875 \r\nQ 22.515625 -1.421875 17.65625 -0.515625 \r\nQ 12.796875 0.390625 7.625 2.203125 \r\nL 7.625 11.71875 \r\nQ 11.71875 9.328125 16.59375 8.109375 \r\nQ 21.484375 6.890625 26.8125 6.890625 \r\nQ 36.078125 6.890625 40.9375 10.546875 \r\nQ 45.796875 14.203125 45.796875 21.1875 \r\nQ 45.796875 27.640625 41.28125 31.265625 \r\nQ 36.765625 34.90625 28.71875 34.90625 \r\nL 20.21875 34.90625 \r\nL 20.21875 43.015625 \r\nL 29.109375 43.015625 \r\nQ 36.375 43.015625 40.234375 45.921875 \r\nQ 44.09375 48.828125 44.09375 54.296875 \r\nQ 44.09375 59.90625 40.109375 62.90625 \r\nQ 36.140625 65.921875 28.71875 65.921875 \r\nQ 24.65625 65.921875 20.015625 65.03125 \r\nQ 15.375 64.15625 9.8125 62.3125 \r\nL 9.8125 71.09375 \r\nQ 15.4375 72.65625 20.34375 73.4375 \r\nQ 25.25 74.21875 29.59375 74.21875 \r\nQ 40.828125 74.21875 47.359375 69.109375 \r\nQ 53.90625 64.015625 53.90625 55.328125 \r\nQ 53.90625 49.265625 50.4375 45.09375 \r\nQ 46.96875 40.921875 40.578125 39.3125 \r\nz\r\n\" id=\"DejaVuSans-51\"/>\r\n      </defs>\r\n      <g transform=\"translate(7.2 221.626747)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-51\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_2\">\r\n     <g id=\"line2d_13\">\r\n      <path clip-path=\"url(#p096bd5b031)\" d=\"M 28.942188 187.391165 \r\nL 363.742188 187.391165 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_14\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m6bed5b7551\" y=\"187.391165\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_8\">\r\n      <!-- −2 -->\r\n      <g transform=\"translate(7.2 191.190384)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-50\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_3\">\r\n     <g id=\"line2d_15\">\r\n      <path clip-path=\"url(#p096bd5b031)\" d=\"M 28.942188 156.954801 \r\nL 363.742188 156.954801 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_16\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m6bed5b7551\" y=\"156.954801\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_9\">\r\n      <!-- −1 -->\r\n      <g transform=\"translate(7.2 160.75402)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-49\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_4\">\r\n     <g id=\"line2d_17\">\r\n      <path clip-path=\"url(#p096bd5b031)\" d=\"M 28.942188 126.518438 \r\nL 363.742188 126.518438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_18\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m6bed5b7551\" y=\"126.518438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_10\">\r\n      <!-- 0 -->\r\n      <g transform=\"translate(15.579688 130.317656)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_5\">\r\n     <g id=\"line2d_19\">\r\n      <path clip-path=\"url(#p096bd5b031)\" d=\"M 28.942188 96.082074 \r\nL 363.742188 96.082074 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_20\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m6bed5b7551\" y=\"96.082074\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_11\">\r\n      <!-- 1 -->\r\n      <g transform=\"translate(15.579688 99.881293)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-49\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_6\">\r\n     <g id=\"line2d_21\">\r\n      <path clip-path=\"url(#p096bd5b031)\" d=\"M 28.942188 65.64571 \r\nL 363.742188 65.64571 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_22\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m6bed5b7551\" y=\"65.64571\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_12\">\r\n      <!-- 2 -->\r\n      <g transform=\"translate(15.579688 69.444929)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-50\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_7\">\r\n     <g id=\"line2d_23\">\r\n      <path clip-path=\"url(#p096bd5b031)\" d=\"M 28.942188 35.209347 \r\nL 363.742188 35.209347 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_24\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m6bed5b7551\" y=\"35.209347\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_13\">\r\n      <!-- 3 -->\r\n      <g transform=\"translate(15.579688 39.008565)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-51\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"text_14\">\r\n     <!-- 1e−2 -->\r\n     <g transform=\"translate(28.942188 14.798437)scale(0.1 -0.1)\">\r\n      <use xlink:href=\"#DejaVuSans-49\"/>\r\n      <use x=\"63.623047\" xlink:href=\"#DejaVuSans-101\"/>\r\n      <use x=\"125.146484\" xlink:href=\"#DejaVuSans-8722\"/>\r\n      <use x=\"208.935547\" xlink:href=\"#DejaVuSans-50\"/>\r\n     </g>\r\n    </g>\r\n   </g>\r\n   <g id=\"patch_3\">\r\n    <path d=\"M 28.942188 235.238438 \r\nL 28.942188 17.798437 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_4\">\r\n    <path d=\"M 363.742188 235.238438 \r\nL 363.742188 17.798437 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_5\">\r\n    <path d=\"M 28.942188 235.238438 \r\nL 363.742188 235.238438 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_6\">\r\n    <path d=\"M 28.942188 17.798438 \r\nL 363.742188 17.798438 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n  </g>\r\n </g>\r\n <defs>\r\n  <clipPath id=\"p096bd5b031\">\r\n   <rect height=\"217.44\" width=\"334.8\" x=\"28.942188\" y=\"17.798438\"/>\r\n  </clipPath>\r\n </defs>\r\n</svg>\r\n",
      "text/plain": "<Figure size 432x288 with 1 Axes>"
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "v = np.array([1,0])\n",
    "A = np.array([[2,1],                       # 旋转 + 缩放\n",
    "              [1,2]])\n",
    "\n",
    "t = A@v\n",
    "\n",
    "vecs = np.array([v,t])\n",
    "origin = [0], [0]\n",
    "plt.axis('equal')\n",
    "plt.grid()\n",
    "plt.ticklabel_format(style='sci', axis='both', scilimits=(0,0))\n",
    "plt.quiver(*origin, vecs[:,0], vecs[:,1], color=['orange', 'blue'], scale=10)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "### 线性变换的几何解释\n",
    "\n",
    "- 缩放: ${a \\cdot I \\cdot \\vec{v}}$\n",
    "- 旋转: ${\\vec{v} \\cdot T}$\n",
    "- 平移: ${\\vec{v} + \\vec{b}}$\n",
    "\n",
    "在二维平面上可以定义旋转矩阵${T}$为：\n",
    "$$T = \\begin{bmatrix}\\cos{\\theta} & -\\sin{\\theta}\\\\ \\sin{\\theta} & \\cos{\\theta} \\end{bmatrix}$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\r\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\r\n  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n<!-- Created with matplotlib (https://matplotlib.org/) -->\r\n<svg height=\"271.794688pt\" version=\"1.1\" viewBox=\"0 0 370.942187 271.794688\" width=\"370.942187pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n <defs>\r\n  <style type=\"text/css\">\r\n*{stroke-linecap:butt;stroke-linejoin:round;}\r\n  </style>\r\n </defs>\r\n <g id=\"figure_1\">\r\n  <g id=\"patch_1\">\r\n   <path d=\"M 0 271.794688 \r\nL 370.942187 271.794688 \r\nL 370.942187 0 \r\nL 0 0 \r\nz\r\n\" style=\"fill:none;\"/>\r\n  </g>\r\n  <g id=\"axes_1\">\r\n   <g id=\"patch_2\">\r\n    <path d=\"M 28.942188 235.238438 \r\nL 363.742188 235.238438 \r\nL 363.742188 17.798438 \r\nL 28.942188 17.798438 \r\nz\r\n\" style=\"fill:#ffffff;\"/>\r\n   </g>\r\n   <g id=\"Quiver_1\">\r\n    <path clip-path=\"url(#p6a4a913d86)\" d=\"M 196.342188 125.262938 \r\nL 218.522688 125.262938 \r\nL 217.267188 122.751938 \r\nL 229.822188 126.518438 \r\nL 217.267188 130.284938 \r\nL 218.522688 127.773938 \r\nL 196.342188 127.773938 \r\nL 196.342188 125.262938 \r\n\" style=\"fill:#ff0000;\"/>\r\n    <path clip-path=\"url(#p6a4a913d86)\" d=\"M 195.604223 125.502717 \r\nL 213.548625 112.465346 \r\nL 211.056975 111.171869 \r\nL 223.428076 106.839387 \r\nL 215.484761 117.266194 \r\nL 215.024553 114.496788 \r\nL 197.080152 127.534158 \r\nL 195.604223 125.502717 \r\n\" style=\"fill:#0000ff;\"/>\r\n    <path clip-path=\"url(#p6a4a913d86)\" d=\"M 195.454415 125.630665 \r\nL 211.138397 109.946683 \r\nL 208.475079 109.05891 \r\nL 220.016123 102.844502 \r\nL 213.801715 114.385546 \r\nL 212.913942 111.722228 \r\nL 197.22996 127.40621 \r\nL 195.454415 125.630665 \r\n\" style=\"fill:#bf00bf;\"/>\r\n    <path clip-path=\"url(#p6a4a913d86)\" d=\"M 195.254893 125.890687 \r\nL 206.345143 106.681811 \r\nL 203.542803 106.513606 \r\nL 213.082188 97.523907 \r\nL 210.066572 110.280106 \r\nL 208.519732 107.937311 \r\nL 197.429482 127.146188 \r\nL 195.254893 125.890687 \r\n\" style=\"fill:#008000;\"/>\r\n   </g>\r\n   <g id=\"matplotlib.axis_1\">\r\n    <g id=\"xtick_1\">\r\n     <g id=\"line2d_1\">\r\n      <path clip-path=\"url(#p6a4a913d86)\" d=\"M 74.596733 235.238438 \r\nL 74.596733 17.798438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_2\">\r\n      <defs>\r\n       <path d=\"M 0 0 \r\nL 0 3.5 \r\n\" id=\"m449fec3f33\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n      </defs>\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"74.596733\" xlink:href=\"#m449fec3f33\" y=\"235.238438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_1\">\r\n      <!-- −4 -->\r\n      <defs>\r\n       <path d=\"M 10.59375 35.5 \r\nL 73.1875 35.5 \r\nL 73.1875 27.203125 \r\nL 10.59375 27.203125 \r\nz\r\n\" id=\"DejaVuSans-8722\"/>\r\n       <path d=\"M 37.796875 64.3125 \r\nL 12.890625 25.390625 \r\nL 37.796875 25.390625 \r\nz\r\nM 35.203125 72.90625 \r\nL 47.609375 72.90625 \r\nL 47.609375 25.390625 \r\nL 58.015625 25.390625 \r\nL 58.015625 17.1875 \r\nL 47.609375 17.1875 \r\nL 47.609375 0 \r\nL 37.796875 0 \r\nL 37.796875 17.1875 \r\nL 4.890625 17.1875 \r\nL 4.890625 26.703125 \r\nz\r\n\" id=\"DejaVuSans-52\"/>\r\n      </defs>\r\n      <g transform=\"translate(67.225639 249.836875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-52\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_2\">\r\n     <g id=\"line2d_3\">\r\n      <path clip-path=\"url(#p6a4a913d86)\" d=\"M 135.46946 235.238438 \r\nL 135.46946 17.798438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_4\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"135.46946\" xlink:href=\"#m449fec3f33\" y=\"235.238438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_2\">\r\n      <!-- −2 -->\r\n      <defs>\r\n       <path d=\"M 19.1875 8.296875 \r\nL 53.609375 8.296875 \r\nL 53.609375 0 \r\nL 7.328125 0 \r\nL 7.328125 8.296875 \r\nQ 12.9375 14.109375 22.625 23.890625 \r\nQ 32.328125 33.6875 34.8125 36.53125 \r\nQ 39.546875 41.84375 41.421875 45.53125 \r\nQ 43.3125 49.21875 43.3125 52.78125 \r\nQ 43.3125 58.59375 39.234375 62.25 \r\nQ 35.15625 65.921875 28.609375 65.921875 \r\nQ 23.96875 65.921875 18.8125 64.3125 \r\nQ 13.671875 62.703125 7.8125 59.421875 \r\nL 7.8125 69.390625 \r\nQ 13.765625 71.78125 18.9375 73 \r\nQ 24.125 74.21875 28.421875 74.21875 \r\nQ 39.75 74.21875 46.484375 68.546875 \r\nQ 53.21875 62.890625 53.21875 53.421875 \r\nQ 53.21875 48.921875 51.53125 44.890625 \r\nQ 49.859375 40.875 45.40625 35.40625 \r\nQ 44.1875 33.984375 37.640625 27.21875 \r\nQ 31.109375 20.453125 19.1875 8.296875 \r\nz\r\n\" id=\"DejaVuSans-50\"/>\r\n      </defs>\r\n      <g transform=\"translate(128.098366 249.836875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-50\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_3\">\r\n     <g id=\"line2d_5\">\r\n      <path clip-path=\"url(#p6a4a913d86)\" d=\"M 196.342188 235.238438 \r\nL 196.342188 17.798438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_6\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"196.342188\" xlink:href=\"#m449fec3f33\" y=\"235.238438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_3\">\r\n      <!-- 0 -->\r\n      <defs>\r\n       <path d=\"M 31.78125 66.40625 \r\nQ 24.171875 66.40625 20.328125 58.90625 \r\nQ 16.5 51.421875 16.5 36.375 \r\nQ 16.5 21.390625 20.328125 13.890625 \r\nQ 24.171875 6.390625 31.78125 6.390625 \r\nQ 39.453125 6.390625 43.28125 13.890625 \r\nQ 47.125 21.390625 47.125 36.375 \r\nQ 47.125 51.421875 43.28125 58.90625 \r\nQ 39.453125 66.40625 31.78125 66.40625 \r\nz\r\nM 31.78125 74.21875 \r\nQ 44.046875 74.21875 50.515625 64.515625 \r\nQ 56.984375 54.828125 56.984375 36.375 \r\nQ 56.984375 17.96875 50.515625 8.265625 \r\nQ 44.046875 -1.421875 31.78125 -1.421875 \r\nQ 19.53125 -1.421875 13.0625 8.265625 \r\nQ 6.59375 17.96875 6.59375 36.375 \r\nQ 6.59375 54.828125 13.0625 64.515625 \r\nQ 19.53125 74.21875 31.78125 74.21875 \r\nz\r\n\" id=\"DejaVuSans-48\"/>\r\n      </defs>\r\n      <g transform=\"translate(193.160938 249.836875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_4\">\r\n     <g id=\"line2d_7\">\r\n      <path clip-path=\"url(#p6a4a913d86)\" d=\"M 257.214915 235.238438 \r\nL 257.214915 17.798438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_8\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"257.214915\" xlink:href=\"#m449fec3f33\" y=\"235.238438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_4\">\r\n      <!-- 2 -->\r\n      <g transform=\"translate(254.033665 249.836875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-50\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_5\">\r\n     <g id=\"line2d_9\">\r\n      <path clip-path=\"url(#p6a4a913d86)\" d=\"M 318.087642 235.238438 \r\nL 318.087642 17.798438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_10\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"318.087642\" xlink:href=\"#m449fec3f33\" y=\"235.238438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_5\">\r\n      <!-- 4 -->\r\n      <g transform=\"translate(314.906392 249.836875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-52\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"text_6\">\r\n     <!-- 1e−2 -->\r\n     <defs>\r\n      <path d=\"M 12.40625 8.296875 \r\nL 28.515625 8.296875 \r\nL 28.515625 63.921875 \r\nL 10.984375 60.40625 \r\nL 10.984375 69.390625 \r\nL 28.421875 72.90625 \r\nL 38.28125 72.90625 \r\nL 38.28125 8.296875 \r\nL 54.390625 8.296875 \r\nL 54.390625 0 \r\nL 12.40625 0 \r\nz\r\n\" id=\"DejaVuSans-49\"/>\r\n      <path d=\"M 56.203125 29.59375 \r\nL 56.203125 25.203125 \r\nL 14.890625 25.203125 \r\nQ 15.484375 15.921875 20.484375 11.0625 \r\nQ 25.484375 6.203125 34.421875 6.203125 \r\nQ 39.59375 6.203125 44.453125 7.46875 \r\nQ 49.3125 8.734375 54.109375 11.28125 \r\nL 54.109375 2.78125 \r\nQ 49.265625 0.734375 44.1875 -0.34375 \r\nQ 39.109375 -1.421875 33.890625 -1.421875 \r\nQ 20.796875 -1.421875 13.15625 6.1875 \r\nQ 5.515625 13.8125 5.515625 26.8125 \r\nQ 5.515625 40.234375 12.765625 48.109375 \r\nQ 20.015625 56 32.328125 56 \r\nQ 43.359375 56 49.78125 48.890625 \r\nQ 56.203125 41.796875 56.203125 29.59375 \r\nz\r\nM 47.21875 32.234375 \r\nQ 47.125 39.59375 43.09375 43.984375 \r\nQ 39.0625 48.390625 32.421875 48.390625 \r\nQ 24.90625 48.390625 20.390625 44.140625 \r\nQ 15.875 39.890625 15.1875 32.171875 \r\nz\r\n\" id=\"DejaVuSans-101\"/>\r\n     </defs>\r\n     <g transform=\"translate(336.484375 262.515)scale(0.1 -0.1)\">\r\n      <use xlink:href=\"#DejaVuSans-49\"/>\r\n      <use x=\"63.623047\" xlink:href=\"#DejaVuSans-101\"/>\r\n      <use x=\"125.146484\" xlink:href=\"#DejaVuSans-8722\"/>\r\n      <use x=\"208.935547\" xlink:href=\"#DejaVuSans-50\"/>\r\n     </g>\r\n    </g>\r\n   </g>\r\n   <g id=\"matplotlib.axis_2\">\r\n    <g id=\"ytick_1\">\r\n     <g id=\"line2d_11\">\r\n      <path clip-path=\"url(#p6a4a913d86)\" d=\"M 28.942188 217.827528 \r\nL 363.742188 217.827528 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_12\">\r\n      <defs>\r\n       <path d=\"M 0 0 \r\nL -3.5 0 \r\n\" id=\"mc96c196f7c\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n      </defs>\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#mc96c196f7c\" y=\"217.827528\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_7\">\r\n      <!-- −3 -->\r\n      <defs>\r\n       <path d=\"M 40.578125 39.3125 \r\nQ 47.65625 37.796875 51.625 33 \r\nQ 55.609375 28.21875 55.609375 21.1875 \r\nQ 55.609375 10.40625 48.1875 4.484375 \r\nQ 40.765625 -1.421875 27.09375 -1.421875 \r\nQ 22.515625 -1.421875 17.65625 -0.515625 \r\nQ 12.796875 0.390625 7.625 2.203125 \r\nL 7.625 11.71875 \r\nQ 11.71875 9.328125 16.59375 8.109375 \r\nQ 21.484375 6.890625 26.8125 6.890625 \r\nQ 36.078125 6.890625 40.9375 10.546875 \r\nQ 45.796875 14.203125 45.796875 21.1875 \r\nQ 45.796875 27.640625 41.28125 31.265625 \r\nQ 36.765625 34.90625 28.71875 34.90625 \r\nL 20.21875 34.90625 \r\nL 20.21875 43.015625 \r\nL 29.109375 43.015625 \r\nQ 36.375 43.015625 40.234375 45.921875 \r\nQ 44.09375 48.828125 44.09375 54.296875 \r\nQ 44.09375 59.90625 40.109375 62.90625 \r\nQ 36.140625 65.921875 28.71875 65.921875 \r\nQ 24.65625 65.921875 20.015625 65.03125 \r\nQ 15.375 64.15625 9.8125 62.3125 \r\nL 9.8125 71.09375 \r\nQ 15.4375 72.65625 20.34375 73.4375 \r\nQ 25.25 74.21875 29.59375 74.21875 \r\nQ 40.828125 74.21875 47.359375 69.109375 \r\nQ 53.90625 64.015625 53.90625 55.328125 \r\nQ 53.90625 49.265625 50.4375 45.09375 \r\nQ 46.96875 40.921875 40.578125 39.3125 \r\nz\r\n\" id=\"DejaVuSans-51\"/>\r\n      </defs>\r\n      <g transform=\"translate(7.2 221.626747)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-51\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_2\">\r\n     <g id=\"line2d_13\">\r\n      <path clip-path=\"url(#p6a4a913d86)\" d=\"M 28.942188 187.391165 \r\nL 363.742188 187.391165 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_14\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#mc96c196f7c\" y=\"187.391165\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_8\">\r\n      <!-- −2 -->\r\n      <g transform=\"translate(7.2 191.190384)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-50\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_3\">\r\n     <g id=\"line2d_15\">\r\n      <path clip-path=\"url(#p6a4a913d86)\" d=\"M 28.942188 156.954801 \r\nL 363.742188 156.954801 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_16\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#mc96c196f7c\" y=\"156.954801\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_9\">\r\n      <!-- −1 -->\r\n      <g transform=\"translate(7.2 160.75402)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-49\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_4\">\r\n     <g id=\"line2d_17\">\r\n      <path clip-path=\"url(#p6a4a913d86)\" d=\"M 28.942188 126.518438 \r\nL 363.742188 126.518438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_18\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#mc96c196f7c\" y=\"126.518438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_10\">\r\n      <!-- 0 -->\r\n      <g transform=\"translate(15.579688 130.317656)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_5\">\r\n     <g id=\"line2d_19\">\r\n      <path clip-path=\"url(#p6a4a913d86)\" d=\"M 28.942188 96.082074 \r\nL 363.742188 96.082074 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_20\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#mc96c196f7c\" y=\"96.082074\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_11\">\r\n      <!-- 1 -->\r\n      <g transform=\"translate(15.579688 99.881293)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-49\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_6\">\r\n     <g id=\"line2d_21\">\r\n      <path clip-path=\"url(#p6a4a913d86)\" d=\"M 28.942188 65.64571 \r\nL 363.742188 65.64571 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_22\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#mc96c196f7c\" y=\"65.64571\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_12\">\r\n      <!-- 2 -->\r\n      <g transform=\"translate(15.579688 69.444929)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-50\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_7\">\r\n     <g id=\"line2d_23\">\r\n      <path clip-path=\"url(#p6a4a913d86)\" d=\"M 28.942188 35.209347 \r\nL 363.742188 35.209347 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_24\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#mc96c196f7c\" y=\"35.209347\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_13\">\r\n      <!-- 3 -->\r\n      <g transform=\"translate(15.579688 39.008565)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-51\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"text_14\">\r\n     <!-- 1e−2 -->\r\n     <g transform=\"translate(28.942188 14.798437)scale(0.1 -0.1)\">\r\n      <use xlink:href=\"#DejaVuSans-49\"/>\r\n      <use x=\"63.623047\" xlink:href=\"#DejaVuSans-101\"/>\r\n      <use x=\"125.146484\" xlink:href=\"#DejaVuSans-8722\"/>\r\n      <use x=\"208.935547\" xlink:href=\"#DejaVuSans-50\"/>\r\n     </g>\r\n    </g>\r\n   </g>\r\n   <g id=\"patch_3\">\r\n    <path d=\"M 28.942188 235.238438 \r\nL 28.942188 17.798437 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_4\">\r\n    <path d=\"M 363.742188 235.238438 \r\nL 363.742188 17.798437 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_5\">\r\n    <path d=\"M 28.942188 235.238438 \r\nL 363.742188 235.238438 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_6\">\r\n    <path d=\"M 28.942188 17.798438 \r\nL 363.742188 17.798438 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n  </g>\r\n </g>\r\n <defs>\r\n  <clipPath id=\"p6a4a913d86\">\r\n   <rect height=\"217.44\" width=\"334.8\" x=\"28.942188\" y=\"17.798438\"/>\r\n  </clipPath>\r\n </defs>\r\n</svg>\r\n",
      "text/plain": "<Figure size 432x288 with 1 Axes>"
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "cos, sin, pi = math.cos, math.sin, math.pi\n",
    "\n",
    "def rotate(a):\n",
    "    return np.array([[cos(a), -sin(a)],\n",
    "                   [sin(a),cos(a)]])\n",
    "\n",
    "v = np.array([1,0])\n",
    "alpha = pi/5                      # 旋转36°\n",
    "beta  = pi/4                      # 旋转45°\n",
    "gamma = pi/3                      # 旋转60°\n",
    "\n",
    "vecs = np.array([v, *[rotate(a)@v for a in [alpha, beta, gamma]]])\n",
    "origin = [0], [0]\n",
    "plt.axis('equal')\n",
    "plt.grid()\n",
    "plt.ticklabel_format(style='sci', axis='both', scilimits=(0,0))\n",
    "plt.quiver(*origin, vecs[:,0], vecs[:,1], color=['r', 'b', 'm', 'g'], scale=10)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "### 仿射变换\n",
    "\n",
    "$$T(\\vec{v}) = A\\vec{v} + \\vec{b}$$\n",
    "\n",
    "例如：\n",
    "\n",
    "\\begin{equation}\\begin{bmatrix}5 & 2\\\\3 & 1\\end{bmatrix} \\cdot  \\begin{bmatrix}1\\\\1\\end{bmatrix} + \\begin{bmatrix}-2\\\\-6\\end{bmatrix} = \\begin{bmatrix}5\\\\-2\\end{bmatrix}\\end{equation}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\r\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\r\n  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n<!-- Created with matplotlib (https://matplotlib.org/) -->\r\n<svg height=\"271.794688pt\" version=\"1.1\" viewBox=\"0 0 370.942187 271.794688\" width=\"370.942187pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n <defs>\r\n  <style type=\"text/css\">\r\n*{stroke-linecap:butt;stroke-linejoin:round;}\r\n  </style>\r\n </defs>\r\n <g id=\"figure_1\">\r\n  <g id=\"patch_1\">\r\n   <path d=\"M 0 271.794688 \r\nL 370.942187 271.794688 \r\nL 370.942187 0 \r\nL 0 0 \r\nz\r\n\" style=\"fill:none;\"/>\r\n  </g>\r\n  <g id=\"axes_1\">\r\n   <g id=\"patch_2\">\r\n    <path d=\"M 28.942188 235.238438 \r\nL 363.742188 235.238438 \r\nL 363.742188 17.798438 \r\nL 28.942188 17.798438 \r\nz\r\n\" style=\"fill:#ffffff;\"/>\r\n   </g>\r\n   <g id=\"Quiver_1\">\r\n    <path clip-path=\"url(#peeaa99f0b1)\" d=\"M 195.454415 125.630665 \r\nL 209.784462 111.300618 \r\nL 207.121144 110.412845 \r\nL 218.662188 104.198437 \r\nL 212.44778 115.739481 \r\nL 211.560007 113.076163 \r\nL 197.22996 127.40621 \r\nL 195.454415 125.630665 \r\n\" style=\"fill:#ffa500;\"/>\r\n    <path clip-path=\"url(#peeaa99f0b1)\" d=\"M 196.808468 125.352735 \r\nL 297.917146 165.796206 \r\nL 297.684006 162.99852 \r\nL 307.942188 171.158437 \r\nL 294.88632 169.992735 \r\nL 296.984584 168.127611 \r\nL 195.875907 127.68414 \r\nL 196.808468 125.352735 \r\n\" style=\"fill:#0000ff;\"/>\r\n   </g>\r\n   <g id=\"matplotlib.axis_1\">\r\n    <g id=\"xtick_1\">\r\n     <g id=\"line2d_1\">\r\n      <path clip-path=\"url(#peeaa99f0b1)\" d=\"M 74.596733 235.238438 \r\nL 74.596733 17.798438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_2\">\r\n      <defs>\r\n       <path d=\"M 0 0 \r\nL 0 3.5 \r\n\" id=\"m41c27a544f\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n      </defs>\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"74.596733\" xlink:href=\"#m41c27a544f\" y=\"235.238438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_1\">\r\n      <!-- −4 -->\r\n      <defs>\r\n       <path d=\"M 10.59375 35.5 \r\nL 73.1875 35.5 \r\nL 73.1875 27.203125 \r\nL 10.59375 27.203125 \r\nz\r\n\" id=\"DejaVuSans-8722\"/>\r\n       <path d=\"M 37.796875 64.3125 \r\nL 12.890625 25.390625 \r\nL 37.796875 25.390625 \r\nz\r\nM 35.203125 72.90625 \r\nL 47.609375 72.90625 \r\nL 47.609375 25.390625 \r\nL 58.015625 25.390625 \r\nL 58.015625 17.1875 \r\nL 47.609375 17.1875 \r\nL 47.609375 0 \r\nL 37.796875 0 \r\nL 37.796875 17.1875 \r\nL 4.890625 17.1875 \r\nL 4.890625 26.703125 \r\nz\r\n\" id=\"DejaVuSans-52\"/>\r\n      </defs>\r\n      <g transform=\"translate(67.225639 249.836875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-52\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_2\">\r\n     <g id=\"line2d_3\">\r\n      <path clip-path=\"url(#peeaa99f0b1)\" d=\"M 135.46946 235.238438 \r\nL 135.46946 17.798438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_4\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"135.46946\" xlink:href=\"#m41c27a544f\" y=\"235.238438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_2\">\r\n      <!-- −2 -->\r\n      <defs>\r\n       <path d=\"M 19.1875 8.296875 \r\nL 53.609375 8.296875 \r\nL 53.609375 0 \r\nL 7.328125 0 \r\nL 7.328125 8.296875 \r\nQ 12.9375 14.109375 22.625 23.890625 \r\nQ 32.328125 33.6875 34.8125 36.53125 \r\nQ 39.546875 41.84375 41.421875 45.53125 \r\nQ 43.3125 49.21875 43.3125 52.78125 \r\nQ 43.3125 58.59375 39.234375 62.25 \r\nQ 35.15625 65.921875 28.609375 65.921875 \r\nQ 23.96875 65.921875 18.8125 64.3125 \r\nQ 13.671875 62.703125 7.8125 59.421875 \r\nL 7.8125 69.390625 \r\nQ 13.765625 71.78125 18.9375 73 \r\nQ 24.125 74.21875 28.421875 74.21875 \r\nQ 39.75 74.21875 46.484375 68.546875 \r\nQ 53.21875 62.890625 53.21875 53.421875 \r\nQ 53.21875 48.921875 51.53125 44.890625 \r\nQ 49.859375 40.875 45.40625 35.40625 \r\nQ 44.1875 33.984375 37.640625 27.21875 \r\nQ 31.109375 20.453125 19.1875 8.296875 \r\nz\r\n\" id=\"DejaVuSans-50\"/>\r\n      </defs>\r\n      <g transform=\"translate(128.098366 249.836875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-50\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_3\">\r\n     <g id=\"line2d_5\">\r\n      <path clip-path=\"url(#peeaa99f0b1)\" d=\"M 196.342188 235.238438 \r\nL 196.342188 17.798438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_6\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"196.342188\" xlink:href=\"#m41c27a544f\" y=\"235.238438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_3\">\r\n      <!-- 0 -->\r\n      <defs>\r\n       <path d=\"M 31.78125 66.40625 \r\nQ 24.171875 66.40625 20.328125 58.90625 \r\nQ 16.5 51.421875 16.5 36.375 \r\nQ 16.5 21.390625 20.328125 13.890625 \r\nQ 24.171875 6.390625 31.78125 6.390625 \r\nQ 39.453125 6.390625 43.28125 13.890625 \r\nQ 47.125 21.390625 47.125 36.375 \r\nQ 47.125 51.421875 43.28125 58.90625 \r\nQ 39.453125 66.40625 31.78125 66.40625 \r\nz\r\nM 31.78125 74.21875 \r\nQ 44.046875 74.21875 50.515625 64.515625 \r\nQ 56.984375 54.828125 56.984375 36.375 \r\nQ 56.984375 17.96875 50.515625 8.265625 \r\nQ 44.046875 -1.421875 31.78125 -1.421875 \r\nQ 19.53125 -1.421875 13.0625 8.265625 \r\nQ 6.59375 17.96875 6.59375 36.375 \r\nQ 6.59375 54.828125 13.0625 64.515625 \r\nQ 19.53125 74.21875 31.78125 74.21875 \r\nz\r\n\" id=\"DejaVuSans-48\"/>\r\n      </defs>\r\n      <g transform=\"translate(193.160938 249.836875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_4\">\r\n     <g id=\"line2d_7\">\r\n      <path clip-path=\"url(#peeaa99f0b1)\" d=\"M 257.214915 235.238438 \r\nL 257.214915 17.798438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_8\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"257.214915\" xlink:href=\"#m41c27a544f\" y=\"235.238438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_4\">\r\n      <!-- 2 -->\r\n      <g transform=\"translate(254.033665 249.836875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-50\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_5\">\r\n     <g id=\"line2d_9\">\r\n      <path clip-path=\"url(#peeaa99f0b1)\" d=\"M 318.087642 235.238438 \r\nL 318.087642 17.798438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_10\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"318.087642\" xlink:href=\"#m41c27a544f\" y=\"235.238438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_5\">\r\n      <!-- 4 -->\r\n      <g transform=\"translate(314.906392 249.836875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-52\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"text_6\">\r\n     <!-- 1e−2 -->\r\n     <defs>\r\n      <path d=\"M 12.40625 8.296875 \r\nL 28.515625 8.296875 \r\nL 28.515625 63.921875 \r\nL 10.984375 60.40625 \r\nL 10.984375 69.390625 \r\nL 28.421875 72.90625 \r\nL 38.28125 72.90625 \r\nL 38.28125 8.296875 \r\nL 54.390625 8.296875 \r\nL 54.390625 0 \r\nL 12.40625 0 \r\nz\r\n\" id=\"DejaVuSans-49\"/>\r\n      <path d=\"M 56.203125 29.59375 \r\nL 56.203125 25.203125 \r\nL 14.890625 25.203125 \r\nQ 15.484375 15.921875 20.484375 11.0625 \r\nQ 25.484375 6.203125 34.421875 6.203125 \r\nQ 39.59375 6.203125 44.453125 7.46875 \r\nQ 49.3125 8.734375 54.109375 11.28125 \r\nL 54.109375 2.78125 \r\nQ 49.265625 0.734375 44.1875 -0.34375 \r\nQ 39.109375 -1.421875 33.890625 -1.421875 \r\nQ 20.796875 -1.421875 13.15625 6.1875 \r\nQ 5.515625 13.8125 5.515625 26.8125 \r\nQ 5.515625 40.234375 12.765625 48.109375 \r\nQ 20.015625 56 32.328125 56 \r\nQ 43.359375 56 49.78125 48.890625 \r\nQ 56.203125 41.796875 56.203125 29.59375 \r\nz\r\nM 47.21875 32.234375 \r\nQ 47.125 39.59375 43.09375 43.984375 \r\nQ 39.0625 48.390625 32.421875 48.390625 \r\nQ 24.90625 48.390625 20.390625 44.140625 \r\nQ 15.875 39.890625 15.1875 32.171875 \r\nz\r\n\" id=\"DejaVuSans-101\"/>\r\n     </defs>\r\n     <g transform=\"translate(336.484375 262.515)scale(0.1 -0.1)\">\r\n      <use xlink:href=\"#DejaVuSans-49\"/>\r\n      <use x=\"63.623047\" xlink:href=\"#DejaVuSans-101\"/>\r\n      <use x=\"125.146484\" xlink:href=\"#DejaVuSans-8722\"/>\r\n      <use x=\"208.935547\" xlink:href=\"#DejaVuSans-50\"/>\r\n     </g>\r\n    </g>\r\n   </g>\r\n   <g id=\"matplotlib.axis_2\">\r\n    <g id=\"ytick_1\">\r\n     <g id=\"line2d_11\">\r\n      <path clip-path=\"url(#peeaa99f0b1)\" d=\"M 28.942188 217.827528 \r\nL 363.742188 217.827528 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_12\">\r\n      <defs>\r\n       <path d=\"M 0 0 \r\nL -3.5 0 \r\n\" id=\"m223518823e\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n      </defs>\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m223518823e\" y=\"217.827528\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_7\">\r\n      <!-- −3 -->\r\n      <defs>\r\n       <path d=\"M 40.578125 39.3125 \r\nQ 47.65625 37.796875 51.625 33 \r\nQ 55.609375 28.21875 55.609375 21.1875 \r\nQ 55.609375 10.40625 48.1875 4.484375 \r\nQ 40.765625 -1.421875 27.09375 -1.421875 \r\nQ 22.515625 -1.421875 17.65625 -0.515625 \r\nQ 12.796875 0.390625 7.625 2.203125 \r\nL 7.625 11.71875 \r\nQ 11.71875 9.328125 16.59375 8.109375 \r\nQ 21.484375 6.890625 26.8125 6.890625 \r\nQ 36.078125 6.890625 40.9375 10.546875 \r\nQ 45.796875 14.203125 45.796875 21.1875 \r\nQ 45.796875 27.640625 41.28125 31.265625 \r\nQ 36.765625 34.90625 28.71875 34.90625 \r\nL 20.21875 34.90625 \r\nL 20.21875 43.015625 \r\nL 29.109375 43.015625 \r\nQ 36.375 43.015625 40.234375 45.921875 \r\nQ 44.09375 48.828125 44.09375 54.296875 \r\nQ 44.09375 59.90625 40.109375 62.90625 \r\nQ 36.140625 65.921875 28.71875 65.921875 \r\nQ 24.65625 65.921875 20.015625 65.03125 \r\nQ 15.375 64.15625 9.8125 62.3125 \r\nL 9.8125 71.09375 \r\nQ 15.4375 72.65625 20.34375 73.4375 \r\nQ 25.25 74.21875 29.59375 74.21875 \r\nQ 40.828125 74.21875 47.359375 69.109375 \r\nQ 53.90625 64.015625 53.90625 55.328125 \r\nQ 53.90625 49.265625 50.4375 45.09375 \r\nQ 46.96875 40.921875 40.578125 39.3125 \r\nz\r\n\" id=\"DejaVuSans-51\"/>\r\n      </defs>\r\n      <g transform=\"translate(7.2 221.626747)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-51\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_2\">\r\n     <g id=\"line2d_13\">\r\n      <path clip-path=\"url(#peeaa99f0b1)\" d=\"M 28.942188 187.391165 \r\nL 363.742188 187.391165 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_14\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m223518823e\" y=\"187.391165\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_8\">\r\n      <!-- −2 -->\r\n      <g transform=\"translate(7.2 191.190384)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-50\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_3\">\r\n     <g id=\"line2d_15\">\r\n      <path clip-path=\"url(#peeaa99f0b1)\" d=\"M 28.942188 156.954801 \r\nL 363.742188 156.954801 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_16\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m223518823e\" y=\"156.954801\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_9\">\r\n      <!-- −1 -->\r\n      <g transform=\"translate(7.2 160.75402)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-49\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_4\">\r\n     <g id=\"line2d_17\">\r\n      <path clip-path=\"url(#peeaa99f0b1)\" d=\"M 28.942188 126.518438 \r\nL 363.742188 126.518438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_18\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m223518823e\" y=\"126.518438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_10\">\r\n      <!-- 0 -->\r\n      <g transform=\"translate(15.579688 130.317656)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_5\">\r\n     <g id=\"line2d_19\">\r\n      <path clip-path=\"url(#peeaa99f0b1)\" d=\"M 28.942188 96.082074 \r\nL 363.742188 96.082074 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_20\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m223518823e\" y=\"96.082074\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_11\">\r\n      <!-- 1 -->\r\n      <g transform=\"translate(15.579688 99.881293)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-49\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_6\">\r\n     <g id=\"line2d_21\">\r\n      <path clip-path=\"url(#peeaa99f0b1)\" d=\"M 28.942188 65.64571 \r\nL 363.742188 65.64571 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_22\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m223518823e\" y=\"65.64571\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_12\">\r\n      <!-- 2 -->\r\n      <g transform=\"translate(15.579688 69.444929)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-50\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_7\">\r\n     <g id=\"line2d_23\">\r\n      <path clip-path=\"url(#peeaa99f0b1)\" d=\"M 28.942188 35.209347 \r\nL 363.742188 35.209347 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_24\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m223518823e\" y=\"35.209347\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_13\">\r\n      <!-- 3 -->\r\n      <g transform=\"translate(15.579688 39.008565)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-51\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"text_14\">\r\n     <!-- 1e−2 -->\r\n     <g transform=\"translate(28.942188 14.798437)scale(0.1 -0.1)\">\r\n      <use xlink:href=\"#DejaVuSans-49\"/>\r\n      <use x=\"63.623047\" xlink:href=\"#DejaVuSans-101\"/>\r\n      <use x=\"125.146484\" xlink:href=\"#DejaVuSans-8722\"/>\r\n      <use x=\"208.935547\" xlink:href=\"#DejaVuSans-50\"/>\r\n     </g>\r\n    </g>\r\n   </g>\r\n   <g id=\"patch_3\">\r\n    <path d=\"M 28.942188 235.238438 \r\nL 28.942188 17.798437 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_4\">\r\n    <path d=\"M 363.742188 235.238438 \r\nL 363.742188 17.798437 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_5\">\r\n    <path d=\"M 28.942188 235.238438 \r\nL 363.742188 235.238438 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_6\">\r\n    <path d=\"M 28.942188 17.798438 \r\nL 363.742188 17.798438 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n  </g>\r\n </g>\r\n <defs>\r\n  <clipPath id=\"peeaa99f0b1\">\r\n   <rect height=\"217.44\" width=\"334.8\" x=\"28.942188\" y=\"17.798438\"/>\r\n  </clipPath>\r\n </defs>\r\n</svg>\r\n",
      "text/plain": "<Figure size 432x288 with 1 Axes>"
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "v = np.array([1,1])\n",
    "A = np.array([[5,2],\n",
    "              [3,1]])\n",
    "b = np.array([-2,-6])\n",
    "\n",
    "t = A@v + b\n",
    "\n",
    "vecs = np.array([v,t])\n",
    "origin = [0], [0]\n",
    "plt.axis('equal')\n",
    "plt.grid()\n",
    "plt.ticklabel_format(style='sci', axis='both', scilimits=(0,0))\n",
    "plt.quiver(*origin, vecs[:,0], vecs[:,1], color=['orange', 'blue'], scale=15)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "## 特征向量和特征值 \n",
    "\n",
    "变换 ${\\begin{bmatrix}2 & 0\\\\0 & 2\\end{bmatrix} \\cdot  \\begin{bmatrix}1\\\\0\\end{bmatrix} = \\begin{bmatrix}2\\\\0\\end{bmatrix}}$ 等价于 ${2 \\times \\begin{bmatrix}1\\\\0\\end{bmatrix} = \\begin{bmatrix}2\\\\0\\end{bmatrix}}$，也可记作${ T(\\vec{v}) = \\lambda\\vec{v}}$，其中\n",
    "\n",
    "$$ T(\\vec{v}) = A\\vec{v} = \\lambda\\vec{v}$$\n",
    "\n",
    "则称 ${\\vec{v}}$ 和 ${\\lambda}$ 是 ${A}$ 的特征向量和特征值。\n",
    "\n",
    "假设，${A=\\begin{bmatrix}2 & 0\\\\0 & 3\\end{bmatrix}}$, 下面求 ${A}$ 的特征向量和特征值："
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    ">[特征值](https://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.eig.html?highlight=eig#numpy.linalg.eig)文档\n",
    "\n",
    "![特征值](http://bazhou.blob.core.windows.net/learning/mpp/eig.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": "[2. 3.]\n[[1. 0.]\n [0. 1.]]\n"
    }
   ],
   "source": [
    "A = np.array([[2,0],\n",
    "              [0,3]])\n",
    "eVals, eVecs = np.linalg.eig(A)\n",
    "print(eVals)\n",
    "print(eVecs)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "特征值和特征向量是成对出现的：\n",
    "$$ \\bigg( \\lambda_{1} = 2, \\;\\; \\vec{v_{1}} = \\begin{bmatrix}1 \\\\ 0\\end{bmatrix} \\bigg) \\;\\;\\; 和\\;\\;\\; \\bigg( \\lambda_{2} = 3, \\;\\; \\vec{v_{2}} = \\begin{bmatrix}0 \\\\ 1\\end{bmatrix} \\bigg) $$\n",
    "\n",
    "可以验证，特征值乘相应的特征向量等于矩阵点乘特征向量 \n",
    "\n",
    "$$ 2 \\times \\begin{bmatrix}1 \\\\ 0\\end{bmatrix} = \\begin{bmatrix}2 \\\\ 0\\end{bmatrix}  \\Leftrightarrow \\begin{bmatrix}2 & 0\\\\0 & 3\\end{bmatrix} \\cdot \\begin{bmatrix}1 \\\\ 0\\end{bmatrix} = \\begin{bmatrix}2 \\\\ 0\\end{bmatrix} $$ \n",
    "\n",
    "以及\n",
    "\n",
    "$$ 3 \\times \\begin{bmatrix}0 \\\\ 1\\end{bmatrix} = \\begin{bmatrix}0 \\\\ 3\\end{bmatrix}  \\Leftrightarrow \\begin{bmatrix}2 & 0\\\\0 & 3\\end{bmatrix} \\cdot \\begin{bmatrix}0 \\\\ 1\\end{bmatrix} = \\begin{bmatrix}0 \\\\ 3\\end{bmatrix} $$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "练习：\n",
    "\n",
    "求矩阵 ${\\begin{bmatrix}2 & 1\\\\1 & 2\\end{bmatrix}}$ 的特征值和特征向量"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": "[3. 1.] [[ 0.70710678 -0.70710678]\n [ 0.70710678  0.70710678]]\n"
    },
    {
     "data": {
      "text/plain": "[array([ True,  True]), array([ True,  True])]"
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A = np.array([[2,1],\n",
    "              [1,2]])\n",
    "\n",
    "eVals, eVecs = np.linalg.eig(A)\n",
    "print(eVals, eVecs)                                        # 注意取eVecs的列\n",
    "[A @ eVecs[:,i] == eVals[i] * eVecs[:,i] for i in [0, 1]]  # 向量的 == 操作\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "$$ \\bigg( \\lambda_{1} = 3, \\;\\; \\vec{v_{1}} = \\begin{bmatrix}0.70710678 \\\\ 0.70710678\\end{bmatrix} \\bigg) \\;\\;\\;和\\;\\;\\; \\bigg( \\lambda_{2} = 1, \\;\\; \\vec{v_{2}} = \\begin{bmatrix}-0.70710678 \\\\ 0.70710678\\end{bmatrix} \\bigg) $$\n",
    "\n",
    "$$ 3 \\times \\begin{bmatrix}0.70710678 \\\\ 0.70710678\\end{bmatrix} = \\begin{bmatrix}2.12132034 \\\\ 2.12132034\\end{bmatrix}  \\Leftrightarrow \\begin{bmatrix}2 & 1\\\\1 & 2\\end{bmatrix} \\cdot \\begin{bmatrix}0.70710678 \\\\ 0.70710678\\end{bmatrix} = \\begin{bmatrix}2.12132034 \\\\ 2.12132034\\end{bmatrix} $$\n",
    "\n",
    "和\n",
    "\n",
    "$$ 1 \\times \\begin{bmatrix}-0.70710678 \\\\ 0.70710678\\end{bmatrix} = \\begin{bmatrix}-0.70710678\\\\0.70710678\\end{bmatrix}  \\Leftrightarrow \\begin{bmatrix}2 & 1\\\\1 & 2\\end{bmatrix} \\cdot \\begin{bmatrix}-0.70710678 \\\\ 0.70710678\\end{bmatrix} = \\begin{bmatrix}-0.70710678\\\\0.70710678\\end{bmatrix} $$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "## 特征分解\n",
    "\n",
    "从前面的例子可以推导出下面的等式：\n",
    "\n",
    "$$A = Q \\Lambda Q^{-1}$$\n",
    "\n",
    "（可以理解为变换到特征向量定义的空间上，投影值就是特征值，然后再变换回来）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": "[[ 0.96276969 -0.48963374]\n [ 0.27032301  0.87192821]]\n[[ 3.56155281  0.        ]\n [ 0.         -0.56155281]]\n[[ 0.96276969 -0.48963374]\n [ 0.27032301  0.87192821]]\n"
    }
   ],
   "source": [
    "A = np.array([[3,2],\n",
    "              [1,0]])\n",
    "\n",
    "l, Q = np.linalg.eig(A)\n",
    "L = np.diag(l)\n",
    "Qinv = np.linalg.inv(Q)\n",
    "print(Q)\n",
    "print(L)\n",
    "print(Q)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "计算${Q}$、${\\Lambda}$ 和 ${Q^{-1}}$\n",
    "$$Q=\\begin{bmatrix}0.96276969 & -0.48963374\\\\0.27032301 & 0.87192821\\end{bmatrix}$$\n",
    "\n",
    "$$\\Lambda=\\begin{bmatrix}3.56155281 & 0\\\\0 & -0.56155281\\end{bmatrix}$$\n",
    "\n",
    "$$Q^{-1}=\\begin{bmatrix}0.89720673 & 0.50382896\\\\-0.27816009 & 0.99068183\\end{bmatrix}$$\n",
    "\n",
    "验证\n",
    "\n",
    "${A = Q \\lambda Q^{-1}}$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": "array([ True,  True])"
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "v = np.array([1.,3.])\n",
    "np.around(A@v) == np.around(Q@L@Qinv@v)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "- 下面可视化变换过程\n",
    "\n",
    "|${Q}$|${\\Lambda}$|${Q^{-1}}$|\n",
    "|-|-|-|\n",
    "|${{\\color{orange}橙} \\to {\\color{red}红}}$|${{\\color{red}红} \\to {\\color{magenta}紫}}$|${{\\color{magenta}紫} \\to {\\color{blue}蓝}}$|"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": "(2,) (2,) (2, 2)\n"
    },
    {
     "data": {
      "image/png": "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\n",
      "image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\r\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\r\n  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n<!-- Created with matplotlib (https://matplotlib.org/) -->\r\n<svg height=\"271.794688pt\" version=\"1.1\" viewBox=\"0 0 370.942187 271.794688\" width=\"370.942187pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n <defs>\r\n  <style type=\"text/css\">\r\n*{stroke-linecap:butt;stroke-linejoin:round;}\r\n  </style>\r\n </defs>\r\n <g id=\"figure_1\">\r\n  <g id=\"patch_1\">\r\n   <path d=\"M 0 271.794688 \r\nL 370.942187 271.794688 \r\nL 370.942187 0 \r\nL 0 0 \r\nz\r\n\" style=\"fill:none;\"/>\r\n  </g>\r\n  <g id=\"axes_1\">\r\n   <g id=\"patch_2\">\r\n    <path d=\"M 28.942188 235.238438 \r\nL 363.742188 235.238438 \r\nL 363.742188 17.798438 \r\nL 28.942188 17.798438 \r\nz\r\n\" style=\"fill:#ffffff;\"/>\r\n   </g>\r\n   <g id=\"Quiver_1\">\r\n    <path clip-path=\"url(#p0b3c32dbdf)\" d=\"M 195.151116 126.121414 \r\nL 208.3179 86.62106 \r\nL 205.538732 87.018084 \r\nL 213.082188 76.298438 \r\nL 212.685164 89.400228 \r\nL 210.700044 87.415108 \r\nL 197.533259 126.915461 \r\nL 195.151116 126.121414 \r\n\" style=\"fill:#ffa500;\"/>\r\n    <path clip-path=\"url(#p0b3c32dbdf)\" d=\"M 195.406257 125.68159 \r\nL 228.196161 89.009327 \r\nL 225.487452 88.271563 \r\nL 236.663718 81.422796 \r\nL 231.103038 93.292647 \r\nL 230.068023 90.683022 \r\nL 197.278118 127.355285 \r\nL 195.406257 125.68159 \r\n\" style=\"fill:#ff0000;\"/>\r\n    <path clip-path=\"url(#p0b3c32dbdf)\" d=\"M 196.560217 125.282014 \r\nL 329.039667 148.643329 \r\nL 328.239304 145.952452 \r\nL 339.94945 151.842022 \r\nL 326.931124 153.370994 \r\nL 328.603608 151.116177 \r\nL 196.124158 127.754861 \r\nL 196.560217 125.282014 \r\n\" style=\"fill:#ff00ff;\"/>\r\n    <path clip-path=\"url(#p0b3c32dbdf)\" d=\"M 196.203541 125.270616 \r\nL 335.633151 109.778437 \r\nL 334.108037 107.421442 \r\nL 347.002188 109.778437 \r\nL 334.939918 114.908368 \r\nL 335.910445 112.27408 \r\nL 196.480834 127.766259 \r\nL 196.203541 125.270616 \r\n\" style=\"fill:#0000ff;\"/>\r\n   </g>\r\n   <g id=\"matplotlib.axis_1\">\r\n    <g id=\"xtick_1\">\r\n     <g id=\"line2d_1\">\r\n      <path clip-path=\"url(#p0b3c32dbdf)\" d=\"M 74.596733 235.238438 \r\nL 74.596733 17.798438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_2\">\r\n      <defs>\r\n       <path d=\"M 0 0 \r\nL 0 3.5 \r\n\" id=\"m19bb1a898d\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n      </defs>\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"74.596733\" xlink:href=\"#m19bb1a898d\" y=\"235.238438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_1\">\r\n      <!-- −4 -->\r\n      <defs>\r\n       <path d=\"M 10.59375 35.5 \r\nL 73.1875 35.5 \r\nL 73.1875 27.203125 \r\nL 10.59375 27.203125 \r\nz\r\n\" id=\"DejaVuSans-8722\"/>\r\n       <path d=\"M 37.796875 64.3125 \r\nL 12.890625 25.390625 \r\nL 37.796875 25.390625 \r\nz\r\nM 35.203125 72.90625 \r\nL 47.609375 72.90625 \r\nL 47.609375 25.390625 \r\nL 58.015625 25.390625 \r\nL 58.015625 17.1875 \r\nL 47.609375 17.1875 \r\nL 47.609375 0 \r\nL 37.796875 0 \r\nL 37.796875 17.1875 \r\nL 4.890625 17.1875 \r\nL 4.890625 26.703125 \r\nz\r\n\" id=\"DejaVuSans-52\"/>\r\n      </defs>\r\n      <g transform=\"translate(67.225639 249.836875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-52\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_2\">\r\n     <g id=\"line2d_3\">\r\n      <path clip-path=\"url(#p0b3c32dbdf)\" d=\"M 135.46946 235.238438 \r\nL 135.46946 17.798438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_4\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"135.46946\" xlink:href=\"#m19bb1a898d\" y=\"235.238438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_2\">\r\n      <!-- −2 -->\r\n      <defs>\r\n       <path d=\"M 19.1875 8.296875 \r\nL 53.609375 8.296875 \r\nL 53.609375 0 \r\nL 7.328125 0 \r\nL 7.328125 8.296875 \r\nQ 12.9375 14.109375 22.625 23.890625 \r\nQ 32.328125 33.6875 34.8125 36.53125 \r\nQ 39.546875 41.84375 41.421875 45.53125 \r\nQ 43.3125 49.21875 43.3125 52.78125 \r\nQ 43.3125 58.59375 39.234375 62.25 \r\nQ 35.15625 65.921875 28.609375 65.921875 \r\nQ 23.96875 65.921875 18.8125 64.3125 \r\nQ 13.671875 62.703125 7.8125 59.421875 \r\nL 7.8125 69.390625 \r\nQ 13.765625 71.78125 18.9375 73 \r\nQ 24.125 74.21875 28.421875 74.21875 \r\nQ 39.75 74.21875 46.484375 68.546875 \r\nQ 53.21875 62.890625 53.21875 53.421875 \r\nQ 53.21875 48.921875 51.53125 44.890625 \r\nQ 49.859375 40.875 45.40625 35.40625 \r\nQ 44.1875 33.984375 37.640625 27.21875 \r\nQ 31.109375 20.453125 19.1875 8.296875 \r\nz\r\n\" id=\"DejaVuSans-50\"/>\r\n      </defs>\r\n      <g transform=\"translate(128.098366 249.836875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-50\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_3\">\r\n     <g id=\"line2d_5\">\r\n      <path clip-path=\"url(#p0b3c32dbdf)\" d=\"M 196.342188 235.238438 \r\nL 196.342188 17.798438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_6\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"196.342188\" xlink:href=\"#m19bb1a898d\" y=\"235.238438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_3\">\r\n      <!-- 0 -->\r\n      <defs>\r\n       <path d=\"M 31.78125 66.40625 \r\nQ 24.171875 66.40625 20.328125 58.90625 \r\nQ 16.5 51.421875 16.5 36.375 \r\nQ 16.5 21.390625 20.328125 13.890625 \r\nQ 24.171875 6.390625 31.78125 6.390625 \r\nQ 39.453125 6.390625 43.28125 13.890625 \r\nQ 47.125 21.390625 47.125 36.375 \r\nQ 47.125 51.421875 43.28125 58.90625 \r\nQ 39.453125 66.40625 31.78125 66.40625 \r\nz\r\nM 31.78125 74.21875 \r\nQ 44.046875 74.21875 50.515625 64.515625 \r\nQ 56.984375 54.828125 56.984375 36.375 \r\nQ 56.984375 17.96875 50.515625 8.265625 \r\nQ 44.046875 -1.421875 31.78125 -1.421875 \r\nQ 19.53125 -1.421875 13.0625 8.265625 \r\nQ 6.59375 17.96875 6.59375 36.375 \r\nQ 6.59375 54.828125 13.0625 64.515625 \r\nQ 19.53125 74.21875 31.78125 74.21875 \r\nz\r\n\" id=\"DejaVuSans-48\"/>\r\n      </defs>\r\n      <g transform=\"translate(193.160938 249.836875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_4\">\r\n     <g id=\"line2d_7\">\r\n      <path clip-path=\"url(#p0b3c32dbdf)\" d=\"M 257.214915 235.238438 \r\nL 257.214915 17.798438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_8\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"257.214915\" xlink:href=\"#m19bb1a898d\" y=\"235.238438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_4\">\r\n      <!-- 2 -->\r\n      <g transform=\"translate(254.033665 249.836875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-50\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_5\">\r\n     <g id=\"line2d_9\">\r\n      <path clip-path=\"url(#p0b3c32dbdf)\" d=\"M 318.087642 235.238438 \r\nL 318.087642 17.798438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_10\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"318.087642\" xlink:href=\"#m19bb1a898d\" y=\"235.238438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_5\">\r\n      <!-- 4 -->\r\n      <g transform=\"translate(314.906392 249.836875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-52\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"text_6\">\r\n     <!-- 1e−2 -->\r\n     <defs>\r\n      <path d=\"M 12.40625 8.296875 \r\nL 28.515625 8.296875 \r\nL 28.515625 63.921875 \r\nL 10.984375 60.40625 \r\nL 10.984375 69.390625 \r\nL 28.421875 72.90625 \r\nL 38.28125 72.90625 \r\nL 38.28125 8.296875 \r\nL 54.390625 8.296875 \r\nL 54.390625 0 \r\nL 12.40625 0 \r\nz\r\n\" id=\"DejaVuSans-49\"/>\r\n      <path d=\"M 56.203125 29.59375 \r\nL 56.203125 25.203125 \r\nL 14.890625 25.203125 \r\nQ 15.484375 15.921875 20.484375 11.0625 \r\nQ 25.484375 6.203125 34.421875 6.203125 \r\nQ 39.59375 6.203125 44.453125 7.46875 \r\nQ 49.3125 8.734375 54.109375 11.28125 \r\nL 54.109375 2.78125 \r\nQ 49.265625 0.734375 44.1875 -0.34375 \r\nQ 39.109375 -1.421875 33.890625 -1.421875 \r\nQ 20.796875 -1.421875 13.15625 6.1875 \r\nQ 5.515625 13.8125 5.515625 26.8125 \r\nQ 5.515625 40.234375 12.765625 48.109375 \r\nQ 20.015625 56 32.328125 56 \r\nQ 43.359375 56 49.78125 48.890625 \r\nQ 56.203125 41.796875 56.203125 29.59375 \r\nz\r\nM 47.21875 32.234375 \r\nQ 47.125 39.59375 43.09375 43.984375 \r\nQ 39.0625 48.390625 32.421875 48.390625 \r\nQ 24.90625 48.390625 20.390625 44.140625 \r\nQ 15.875 39.890625 15.1875 32.171875 \r\nz\r\n\" id=\"DejaVuSans-101\"/>\r\n     </defs>\r\n     <g transform=\"translate(336.484375 262.515)scale(0.1 -0.1)\">\r\n      <use xlink:href=\"#DejaVuSans-49\"/>\r\n      <use x=\"63.623047\" xlink:href=\"#DejaVuSans-101\"/>\r\n      <use x=\"125.146484\" xlink:href=\"#DejaVuSans-8722\"/>\r\n      <use x=\"208.935547\" xlink:href=\"#DejaVuSans-50\"/>\r\n     </g>\r\n    </g>\r\n   </g>\r\n   <g id=\"matplotlib.axis_2\">\r\n    <g id=\"ytick_1\">\r\n     <g id=\"line2d_11\">\r\n      <path clip-path=\"url(#p0b3c32dbdf)\" d=\"M 28.942188 217.827528 \r\nL 363.742188 217.827528 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_12\">\r\n      <defs>\r\n       <path d=\"M 0 0 \r\nL -3.5 0 \r\n\" id=\"m6d09e42b9f\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n      </defs>\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m6d09e42b9f\" y=\"217.827528\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_7\">\r\n      <!-- −3 -->\r\n      <defs>\r\n       <path d=\"M 40.578125 39.3125 \r\nQ 47.65625 37.796875 51.625 33 \r\nQ 55.609375 28.21875 55.609375 21.1875 \r\nQ 55.609375 10.40625 48.1875 4.484375 \r\nQ 40.765625 -1.421875 27.09375 -1.421875 \r\nQ 22.515625 -1.421875 17.65625 -0.515625 \r\nQ 12.796875 0.390625 7.625 2.203125 \r\nL 7.625 11.71875 \r\nQ 11.71875 9.328125 16.59375 8.109375 \r\nQ 21.484375 6.890625 26.8125 6.890625 \r\nQ 36.078125 6.890625 40.9375 10.546875 \r\nQ 45.796875 14.203125 45.796875 21.1875 \r\nQ 45.796875 27.640625 41.28125 31.265625 \r\nQ 36.765625 34.90625 28.71875 34.90625 \r\nL 20.21875 34.90625 \r\nL 20.21875 43.015625 \r\nL 29.109375 43.015625 \r\nQ 36.375 43.015625 40.234375 45.921875 \r\nQ 44.09375 48.828125 44.09375 54.296875 \r\nQ 44.09375 59.90625 40.109375 62.90625 \r\nQ 36.140625 65.921875 28.71875 65.921875 \r\nQ 24.65625 65.921875 20.015625 65.03125 \r\nQ 15.375 64.15625 9.8125 62.3125 \r\nL 9.8125 71.09375 \r\nQ 15.4375 72.65625 20.34375 73.4375 \r\nQ 25.25 74.21875 29.59375 74.21875 \r\nQ 40.828125 74.21875 47.359375 69.109375 \r\nQ 53.90625 64.015625 53.90625 55.328125 \r\nQ 53.90625 49.265625 50.4375 45.09375 \r\nQ 46.96875 40.921875 40.578125 39.3125 \r\nz\r\n\" id=\"DejaVuSans-51\"/>\r\n      </defs>\r\n      <g transform=\"translate(7.2 221.626747)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-51\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_2\">\r\n     <g id=\"line2d_13\">\r\n      <path clip-path=\"url(#p0b3c32dbdf)\" d=\"M 28.942188 187.391165 \r\nL 363.742188 187.391165 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_14\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m6d09e42b9f\" y=\"187.391165\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_8\">\r\n      <!-- −2 -->\r\n      <g transform=\"translate(7.2 191.190384)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-50\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_3\">\r\n     <g id=\"line2d_15\">\r\n      <path clip-path=\"url(#p0b3c32dbdf)\" d=\"M 28.942188 156.954801 \r\nL 363.742188 156.954801 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_16\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m6d09e42b9f\" y=\"156.954801\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_9\">\r\n      <!-- −1 -->\r\n      <g transform=\"translate(7.2 160.75402)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-49\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_4\">\r\n     <g id=\"line2d_17\">\r\n      <path clip-path=\"url(#p0b3c32dbdf)\" d=\"M 28.942188 126.518438 \r\nL 363.742188 126.518438 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_18\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m6d09e42b9f\" y=\"126.518438\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_10\">\r\n      <!-- 0 -->\r\n      <g transform=\"translate(15.579688 130.317656)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_5\">\r\n     <g id=\"line2d_19\">\r\n      <path clip-path=\"url(#p0b3c32dbdf)\" d=\"M 28.942188 96.082074 \r\nL 363.742188 96.082074 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_20\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m6d09e42b9f\" y=\"96.082074\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_11\">\r\n      <!-- 1 -->\r\n      <g transform=\"translate(15.579688 99.881293)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-49\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_6\">\r\n     <g id=\"line2d_21\">\r\n      <path clip-path=\"url(#p0b3c32dbdf)\" d=\"M 28.942188 65.64571 \r\nL 363.742188 65.64571 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_22\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m6d09e42b9f\" y=\"65.64571\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_12\">\r\n      <!-- 2 -->\r\n      <g transform=\"translate(15.579688 69.444929)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-50\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_7\">\r\n     <g id=\"line2d_23\">\r\n      <path clip-path=\"url(#p0b3c32dbdf)\" d=\"M 28.942188 35.209347 \r\nL 363.742188 35.209347 \r\n\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\r\n     </g>\r\n     <g id=\"line2d_24\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"28.942188\" xlink:href=\"#m6d09e42b9f\" y=\"35.209347\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_13\">\r\n      <!-- 3 -->\r\n      <g transform=\"translate(15.579688 39.008565)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-51\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"text_14\">\r\n     <!-- 1e−2 -->\r\n     <g transform=\"translate(28.942188 14.798437)scale(0.1 -0.1)\">\r\n      <use xlink:href=\"#DejaVuSans-49\"/>\r\n      <use x=\"63.623047\" xlink:href=\"#DejaVuSans-101\"/>\r\n      <use x=\"125.146484\" xlink:href=\"#DejaVuSans-8722\"/>\r\n      <use x=\"208.935547\" xlink:href=\"#DejaVuSans-50\"/>\r\n     </g>\r\n    </g>\r\n   </g>\r\n   <g id=\"patch_3\">\r\n    <path d=\"M 28.942188 235.238438 \r\nL 28.942188 17.798437 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_4\">\r\n    <path d=\"M 363.742188 235.238438 \r\nL 363.742188 17.798437 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_5\">\r\n    <path d=\"M 28.942188 235.238438 \r\nL 363.742188 235.238438 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_6\">\r\n    <path d=\"M 28.942188 17.798438 \r\nL 363.742188 17.798438 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n  </g>\r\n </g>\r\n <defs>\r\n  <clipPath id=\"p0b3c32dbdf\">\r\n   <rect height=\"217.44\" width=\"334.8\" x=\"28.942188\" y=\"17.798438\"/>\r\n  </clipPath>\r\n </defs>\r\n</svg>\r\n",
      "text/plain": "<Figure size 432x288 with 1 Axes>"
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "\n",
    "t1 = np.linalg.inv(Q)@v\n",
    "print(v.shape, t1.shape, L.shape)\n",
    "t2 = L@t1\n",
    "t3 = Q@t2\n",
    "\n",
    "vecs = np.array([v, t1, t2, t3])\n",
    "origin = [0], [0]\n",
    "plt.axis('equal')\n",
    "plt.grid()\n",
    "plt.ticklabel_format(style='sci', axis='both', scilimits=(0,0))\n",
    "plt.quiver(*origin, vecs[:,0], vecs[:,1], color=['orange', 'red', 'magenta', 'blue'], scale=20)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "## 矩阵的秩\n",
    "\n",
    "对于一个方形矩阵，不为0的特征值的个数。\n",
    "\n",
    "比如\n",
    "${A=\\begin{bmatrix}1 & 2\\\\4 & 3\\end{bmatrix}}$ 其特征值对角阵是 ${\\Lambda=\\begin{bmatrix}-1 & 0\\\\0 & 5\\end{bmatrix}}$\n",
    "\n",
    "所以${A}$的秩是2，和矩阵的维度一样，称为满秩矩阵。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-1.,  0.],\n",
       "       [ 0.,  5.]])"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A = np.matrix([[1,2],\n",
    "              [4,3]])\n",
    "l, Q = np.linalg.eig(A)\n",
    "L = np.diag(l)\n",
    "L"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "又例如${B=\\begin{bmatrix}3 & -3 & 6\\\\2 & -2 & 4\\\\1 & -1 & 2\\end{bmatrix}}$ 的特征值对角阵是 ${\\Lambda=\\begin{bmatrix}3 & 0& 0\\\\0 & -6\\times10^{-17} & 0\\\\0 & 0 & 3.6\\times10^{-16}\\end{bmatrix} \\approx \\begin{bmatrix}3 & 0& 0\\\\0 & 0 & 0\\\\0 & 0 & 0\\end{bmatrix}}$\n",
    "\n",
    "所以${B}$的秩是1，比矩阵的维度3小，称为欠定矩阵。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[3.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n",
       "       [0.00000000e+00, 5.23364153e-16, 0.00000000e+00],\n",
       "       [0.00000000e+00, 0.00000000e+00, 0.00000000e+00]])"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "B = np.array([[3,-3,6],\n",
    "              [2,-2,4],\n",
    "              [1,-1,2]])\n",
    "lb, Qb = np.linalg.eig(B)\n",
    "Lb = np.diag(lb)\n",
    "Lb"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "## 满秩方阵的可逆性\n",
    "\n",
    "证明：${A^{-1} = Q \\Lambda^{-1} Q^{-1}}$\n",
    "\n",
    "$$ I = A^{-1}A $$\n",
    "因为：${A=Q \\Lambda Q^{-1}}$\n",
    "$$ I = A^{-1}Q \\Lambda Q^{-1} $$\n",
    "两边同时乘：${Q\\Lambda^{-1}Q^{-1}}$\n",
    "$$ IQ\\Lambda^{-1}Q^{-1} = A^{-1}Q \\Lambda Q^{-1}Q\\Lambda^{-1}Q^{-1}$$\n",
    "两边同时消去单位阵\n",
    "$$ Q\\Lambda^{-1}Q^{-1} = A^{-1} $$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "- 对角阵求逆只要把对角元素求倒数即可（矩阵除法→算术除法）\n",
    "- 0没有倒数（满秩要求）\n",
    "- 对于满秩方阵的求逆\n",
    "  - 特征值和特征向量\n",
    "  - 算术除\n",
    "  - 矩阵乘"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "练习:\n",
    "\n",
    "验证 ${A = \\begin{bmatrix}1 & 2\\\\4 & 3\\end{bmatrix} \\Rightarrow A^{-1}=\\begin{bmatrix}-0.6 & 0.4\\\\0.8 & -0.2\\end{bmatrix}}$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ True,  True],\n",
       "       [ True,  True]])"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A = np.matrix([[1,2],\n",
    "              [4,3]])\n",
    "l, Q = np.linalg.eig(A)\n",
    "L = np.matrix(np.diag(l))\n",
    "np.around(Q@L.I@Q.I,1) == np.around(A.I,1)"
   ]
  }
 ],
 "metadata": {
  "celltoolbar": "Slideshow",
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  },
  "livereveal": {
   "scroll": true
  },
  "rise": {
   "enable_chalkboard": true
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}